【问题标题】:'find_element_by_xpath' not working correctly Selenium“find_element_by_xpath”无法正常工作 Selenium
【发布时间】:2021-10-07 12:52:04
【问题描述】:

我正在尝试制作一个机器人,对 pinterest 上的某个 pin 发表评论,该 pin 有两个选项卡、照片和 cmets,我正在尝试单击 cmets 以便发表我的评论,我使用了该元素的 xpath ,但是当我运行它时,它点击了评论按钮下方的图片,我确保 xpath 是唯一的,我试图在控制台中找到它,它给了我一个我想要的结果,所以我没有不明白怎么回事,谁能帮帮我?

固定网址:URL

try:
   WebDriverWait(self.browser, 10).until(
          EC.visibility_of_element_located((By.XPATH, "//div[contains(text(), 'comments')]")))
except TimeoutException:
   pass
else:
   sleep(3)
   self.browser.find_element_by_xpath('//div[contains(text(), "comments"]').click()

enter image description here

【问题讨论】:

  • 请检查 .. 它在 iframe 内吗?
  • 我会努力的。
  • 我检查过,我相信它不在 iframe 内
  • 错误是什么,你得到了。如果没有这样的元素异常。您需要添加等待
  • 不,它只是点击了错误的元素

标签: python selenium xpath


【解决方案1】:

尝试关闭"]" 方括号

【讨论】:

  • 我想如果有这样的错误它会告诉我
  • 我在stackoverflow上编辑了代码,所以我可能忘记了
  • 在那个“div”下面应该有一个带有链接的锚标签,点击那个锚标签,因为点击一个“div”标签是没有用的。
  • 你知道如何实现我想要的,比如变通
【解决方案2】:

尝试使用:

self.browser.find_element_by_xpath("//div[@data-test-id='canonicalCommentsTab']").click()

【讨论】:

  • 没用,结果一样
【解决方案3】:

您能否在您的代码中关注 xpath,并且当我在浏览器中打开 URL 时,位于的评论框不可见,最好您需要向下滚动然后进行评论。

发表评论的 Xpath 是

//textarea[@data-test-id='communityItemTextBox']

获取总 cmets 的 Xpath

//h3[包含(text(),'cmets')]

我在该网站上只看到一个评论框

如果你登录了,

请在输入值之前在您的代码中添加等待时间

from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.XPATH, "//textarea[@data-test-id='communityItemTextBox']"))

【讨论】:

  • 有那种类型的 pin 包含 2 个选项卡,一个用于照片,一个用于 cmets,所以我想单击 cmets 以查看该 textarea
  • 但我只看到一个文本区域。
  • 如果你转到我在问题中提供的网址和图片,你就会明白我想要实现的目标
  • 你想发表评论,我默认只看到一个评论框。我在这里提到了正确的xpath。当我尝试发表评论时,我可以发表评论。还有什么问题?您在控制台中遇到任何错误?
  • 您登录了吗?因为在您的图片中,没有箭头标记可以最小化/最大化评论部分。
猜你喜欢
  • 2020-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-02
  • 2016-08-01
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
相关资源
最近更新 更多