【问题标题】:xpath not recognized in selenium, but is recognized in XPatherxpath 在 selenium 中不被识别,但在 XPather 中被识别
【发布时间】:2009-12-02 23:04:59
【问题描述】:

我的脚本中有以下代码:

System.out.println(selenium.getAttribute("xpath=//div[@class='guest clearfix'][1]/@id"));

当我尝试运行脚本时,它说找不到元素。如果我将 xpath 输入 XPather(firefox 插件)//div[@class='guest clearfix'][1]/@id,它将正确地给我 id。

我很困惑为什么它不能在我的代码中运行。如果有人能在我的代码中看到任何错误,请告诉我。

谢谢

【问题讨论】:

  • 我正在尝试从此片段中获取 id,其中数字是动态生成的数字,在运行时未知。

标签: java xpath selenium


【解决方案1】:

我认为问题在于@id 之前的额外正斜杠。请尝试以下操作:

selenium.getAttribute("//div[@class='guest clearfix'][1]@id");

我相信最终的 /@id 是返回属性的有效 XPath,但 Selenium 的语法不同,因为它需要一个元素定位器,后跟一个 @ 和属性名称。

此外,您可以使用以下 CSS 定位器实现相同的目的:

selenium.getAttribute("css=div.guest.clearfix@id");

【讨论】:

  • 嗨,戴夫,我尝试了您发布的两个建议,但都没有找到该元素。我收到的错误是:com.thoughtworks.selenium.SeleniumException: ERROR: Element //div[@class='guest clearfix'][1] not found 当我尝试 CSS 时,我得到:com.thoughtworks.selenium。 SeleniumException:错误:未找到元素 css=div.guest.clearfix[1]
  • 用 HTML 的 sn-p 更新您的问题是值得的。命令运行时元素是否可能已加载?如果是这样,可能值得添加 waitForCondition 或类似名称。
【解决方案2】:

听起来问题不在于属性,而在于基本定位器本身。我建议您在 Firebug 中使用 $x function 并确保首先定位 元素(而不是属性)有效。

【讨论】:

    【解决方案3】:

    这是 SeleniumIDE 在其参考部分中显示的内容:

    参数:

    • attributeLocator - 一个元素定位器,后跟一个 @ 符号,然后是属性名称,例如“foo@bar”

    所以,戴夫的回答是正确的。

    【讨论】:

      猜你喜欢
      • 2021-11-22
      • 2022-01-06
      • 2012-02-28
      • 2018-12-29
      • 1970-01-01
      • 2018-08-30
      • 2010-11-01
      • 1970-01-01
      • 2019-02-23
      相关资源
      最近更新 更多