【问题标题】:Xpath is invalid in Selenium's automated browserXpath 在 Selenium 的自动浏览器中无效
【发布时间】:2019-03-07 20:18:53
【问题描述】:

我正在尝试自动化与网站的一些交互。我正在使用 Chropath 来查找各种元素的绝对 xpath,然后在 selenium 中与它们进行交互。但是,selenium 使用“消息:过时的元素引用:元素未附加到页面文档”来响应一个按钮。如果我打开一个新的 chrome 浏览器并导航到该按钮,Chropath 会显示一个有效的 xpath。但是,如果我在浏览器中检查 selenium 打开的相同元素,则 chropath 会显示“它可能是来自不同 src 的 svg/pseudo/comment/iframe 的子元素。XPath 不支持它们。”对于相对 xpath 和“它可能是来自不同 src 的 iframe 的子代,目前不支持。”在普通的Chrome浏览器中,绝对xpath是

/html[1]/body[1]/form[1]/span[1]/table[1]/tbody[1]/tr[2]/td[1]/table[1]/tbody[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[1]/td[1]/div[2]/div[1]/table[1]/tbody[1]/tr[2]/td[1]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[3]/table[1]/tbody[1]/tr[1]/td[1]/input[1]

相对xpath是

//input[@value='View Report']

有人知道为什么会存在这种差异吗?我也使用 CSS 选择器尝试了相同的过程,并产生了相同的结果。

【问题讨论】:

  • XPath 不支持它们 XPath 在哪里? Don't do this。请阅读为什么screenshot of HTML or code or error is a bad idea。考虑使用基于格式化文本的相关 HTML、代码试验和错误堆栈跟踪来更新问题。
  • 好的,我添加了可访问的xpath并删除了屏幕截图。我同意“Xpath 不支持它们”听起来很糟糕,但这就是它告诉我的。

标签: selenium xpath iframe selenium-chromedriver


【解决方案1】:

作为 Stomp,建议您可以尝试在寻找该元素之前等待一些时间。请确保该元素不在来自不同 src 的 iframe 内。当您尝试与之交互时,该元素也会被加载并启用。如我所见,这是输入标签,因此请确保已启用。

【讨论】:

    【解决方案2】:

    在查找元素之前等待几秒钟让所有内容完成加载,我就可以让它工作。我用 time.sleep() 语句做到了这一点,但我认为循环也可以很好地工作并且可能更精确。

    【讨论】:

      猜你喜欢
      • 2016-09-23
      • 2015-11-12
      • 1970-01-01
      • 2016-11-08
      • 2016-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多