【问题标题】:Selenium Click method not working on an Xpath locatorSelenium Click 方法不适用于 Xpath 定位器
【发布时间】:2010-10-25 04:16:00
【问题描述】:

伙计们,

我第一次使用 Stack Overflow。希望大家帮忙...

我正在尝试使用 Selenium 单击 html 页面上的“立即购买”按钮。这是 HTML sn-p:

</div>
    <a href="javascript:void(0)" class="buttonCheckout">Buy Now</a>
    <a href="#" class="buttonSoldout">Sold Out</a>
</div>

我使用 Selenium IDE 来获取正确的 Xpath 定位器,但单击事件总是失败。

>> chk = "id('yui-gen2')/x:div[3]/x:div/x:a[1]"
=> "id('yui-gen2')/x:div[3]/x:div/x:a[1]"
>> @selenium.get_xpath_count(chk)
=> "1"

>> @selenium.click(chk)
**Error**

>> chk = "xpath = " + chk
=> "xpath = id('yui-gen2')/x:div[3]/x:div/x:a[1]"
>> @selenium.click(chk)
**Error**

The **Error** is:
selenium-client received failure from selenium server:
requested:
 cmd=click
 1=xpath = id('yui-gen2')/x:div[3]/x:div/x:a[1]
 sessionId=d4d6796b3c9749139621cd0cbcde80b2
received:
 "ERROR: Element xpath = id('yui-gen2')/x:div[3]/x:div/x:a[1] not found"
 called from C:/Ruby187/lib/ruby/1.8/timeout.rb:67:in `timeout'
 enium::CommandError: ERROR: Element xpath = id('yui-gen2')/x:div[3]/x:div/x:a[1] not  found

我已经尝试了论坛上的其他一些建议 - @selenium.double_click(chk)@selenium.fire_event(chk, 'click') - 但它们给出了相同的 Element not found 错误。

我也尝试过上述各种排列方式,尝试过其他 Xpaths(chk = "//a[@class='buttonCheckout']"chk = "/descendant::a[@class='buttonCheckout']"chk = "//a[@href='javascript:void(0)']"

在所有这些情况下,我相信我找到了正确的定位器,因为 get_xpath_count 方法有效,但 click 总是失败。

这里有什么建议吗?提前致谢!

【问题讨论】:

  • 您还没有显示完整的 XHTML 文档,因此任何人都无法验证 XPath 表达式是否会选择所需的节点。请编辑您的问题并提供所有必要信息。

标签: xpath selenium selenium-ide


【解决方案1】:

错误消息“Element xpath = ... not found”清楚地说明了真正的问题 - 所以双击和触发事件将无济于事。

您可以尝试安装 Firefox 的 Selenium IDE 插件,开始录制并点击“立即购买”按钮。 Selenium IDE 会自动找到一些方法来定位元素。此外,它通常会在下拉列表中建议几个定位器变体。

另外,您可以尝试使用 XPather / XPath 检查器插件来查找和检查合适的 xpath 定位器变体。

【讨论】:

    【解决方案2】:

    这很尴尬,但我想通了...... XPath 定位器很好。

    问题在于语句中的空格:

    chk = "xpath = " + chk
    

    应该是:

    chk = "xpath=" + chk
    

    然后一切正常。

    新手哈。

    谢谢大家。

    【讨论】:

      猜你喜欢
      • 2017-06-05
      • 1970-01-01
      • 2013-01-20
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 2021-04-14
      • 1970-01-01
      相关资源
      最近更新 更多