2010-10-24 51 views
0

民間,Selenium點擊方法不工作在Xpath定位器

我第一次在堆棧溢出。希望你們都可以幫助...

我想使用Selenium點擊在html頁面上的'立即購買'按鈕。這裏的HTML片段:

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

我用硒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') - 但那些給予同樣找不到元素錯誤。

我也嘗試了所有種以上的排列,嘗試其他的XPath(chk = "//a[@class='buttonCheckout']"chk = "/descendant::a[@class='buttonCheckout']"chk = "//a[@href='javascript:void(0)']"

在所有這些情況下,我相信我已經找到了,因爲get_xpath_count方法作品的權利定位器但click總是失敗

任何建議,在這裏先謝謝

+1

您尚未顯示完整的XHTML文檔,因此任何人都無法驗證XPath表達式是否會選擇所需的節點。請編輯您的問題並提供所有必要的信息。 – 2010-10-24 15:36:55

回答

0

這是令人尷尬的,但我知道了...... XPath定位器很好。

的問題是與語句中的空間:

chk = "xpath = " + chk 

它應該是:

chk = "xpath=" + chk 

然後一切都很好地工作。

新手哈。

謝謝大家。

1

錯誤消息「元素的XPath = ...沒有發現」中明確指出真正的問題 - ?!所以雙擊和火災事件也無濟於事。

您可能會嘗試安裝Firefox的Selenium IDE插件,開始錄製並點擊「立即購買」按鈕。 Selenium IDE會自動找到某種方法來定位元素。另外,它通常會在下拉列表中顯示幾個定位器變體。

此外,您可以嘗試使用XPather/XPath檢查器插件來查找和檢查適當的xpath定位器變體。