Selenium Click方法不适用于Xpath定位器

时间:2010-10-24 04:44:56

标签: xpath selenium selenium-ide

民间,

我第一次参加Stack Overflow。希望你们都能帮忙......

我正在尝试使用Selenium点击html页面上的“立即购买”按钮。这是HTML片段:

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

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

>> 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错误。

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

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

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

2 个答案:

答案 0 :(得分:1)

错误消息“Element xpath = ... not found”清楚地说明了真正的问题 - 因此双击和火灾事件无济于事。

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

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

答案 1 :(得分:0)

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

问题在于声明中的空格:

chk = "xpath = " + chk

应该是:

chk = "xpath=" + chk

然后一切都很顺利。

新手哈哈。

谢谢大家。