首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Selenium ElementClickInterceptedException:其他元素在Instagram页面上单击Like按钮时会收到单击错误

Selenium ElementClickInterceptedException:其他元素在Instagram页面上单击Like按钮时会收到单击错误
EN

Stack Overflow用户
提问于 2021-11-23 00:39:07
回答 3查看 114关注 0票数 0

我曾经使用以下python + selenium库代码来喜欢任何IG帖子。

下面是一段代码:

代码语言:javascript
运行
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

"""
imagine on chrome browser you click on any IG picture of a gallery
of a specific account
then you see only that specific picture have the heart icon to click to like
see printscreen below
"""
like = browser.find_element_by_css_selector("[aria-label='Like']") 
like.get_attribute("aria-label")
like.click()  #error on this line !!!!!!

它以前是可以工作的,但最近我得到了以下错误:

代码语言:javascript
运行
复制
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <span aria-label="Like" class="glyphsSpriteHeart__filled__16__white u-__7"></span> is not clickable at point (827, 76). Other element would receive the click: <div class=" _32yJO" role="dialog">...</div>
  (Session info: chrome=95.0.4638.69)

有人能帮我解决这个问题吗?

EN

回答 3

Stack Overflow用户

发布于 2021-11-23 01:10:40

该元素位于svg标记中。为了与svg标记交互,下面是语法。You can refer this.

代码语言:javascript
运行
复制
//*[local-name()='svg']
Or
//*[name()='svg']

根据DOM的屏幕截图,Like元素的xpath为:

代码语言:javascript
运行
复制
//*[local-name()='svg' and @aria-label='Like']

一定要检查xpath是否是DOM中该元素的惟一定位器(1/1匹配)。You can refer this.

票数 0
EN

Stack Overflow用户

发布于 2021-11-23 03:14:24

要点击Instagram图标,您可以使用以下任一Locator Strategies

使用css_selector

button svgaria-label='Like'").click()“driver.find_element(By.CSS_SELECTOR

使用xpath

name(By.XPATH,"//button//*name()='svg‘和@aria-label='Like'").click()

所需的元素是一个动态元素,因此要单击需要为element_to_be_clickable()引入WebDriverWait的元素,可以使用以下Locator Strategies之一

使用CSS_SELECTOR

driver(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"button svgaria-label='Like'"))).click() (驱动程序,WebDriverWait“按钮)

使用XPATH

name(driver,20).until(EC.element_to_be_clickable((By.XPATH,“//button//*WebDriverWait()=‘svg’和@aria-label='Like'"))).click()

  • Note:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC

参考文献

您可以在下面的链接中找到一些相关的详细讨论:

票数 0
EN

Stack Overflow用户

发布于 2021-11-23 04:57:14

通常如下所示的xpath

代码语言:javascript
运行
复制
//*[name()='svg' and @aria-label='Like']

应表示HTMLDOM中的所有链接图标。

如果你想更具体,即基于IG句柄,你想按like图标,那么你应该使用这个

代码语言:javascript
运行
复制
//a[text()='barked']/ancestor::header/../../following-sibling::div[2]//descendant::span[2]//*[name()='svg']

此外,我还建议您使用ExplicitWait driver WebdriverWait

代码语言:javascript
运行
复制
wait = WebDriverWait(driver, 30)
wait.until(EC.element_to_be_clickable((By.XPATH, "paste the above here"))).click()

导入:

代码语言:javascript
运行
复制
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

如果我们在HTML DOM中有唯一的条目,请检查dev tools (谷歌chrome)。

您应该检查的xpath:

代码语言:javascript
运行
复制
//*[name()='svg' and @aria-label='Like']

要检查的步骤:

Press F12 in Chrome ->转到element部分-> do a CTRL + F ->,然后粘贴xpath并查看所需的element是否正在使用 matching 1/1 matching节点进行高亮显示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70074075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档