2017-01-31 68 views
0

我有以下HTML代碼。 列表中的項目按隨機順序產生:無法使用webdriver單擊列表項中的按鈕

<ul class="list"> 
    <li> 
    One 
    <span class="btn-wrap"> 
     <a href="#" data-target-modal="CustomIdForEachModal0" class="btn btn--default btn--s">Send</a> 
    </span> 
    </li> 
    <li> 
    Two 
    <span class="btn-wrap"> 
     <a href="#" data-target-modal="CustomIdForEachModal1" class="btn btn--default btn--s">Send</a> 
    </span> 
    </li> 
    <li> 
    Three 
    <span class="btn-wrap"> 
     <a href="#" data-target-modal="CustomIdForEachModal2" class="btn btn--default btn--s">Send</a> 
    </span> 
    </li> 
    <li> 
    Four 
    <span class="btn-wrap"> 
     <a href="#" data-target-modal="CustomIdForEachModal3" class="btn btn--default btn--s">Send</a> 
    </span> 
    </li> 
    <li> 
    Five 
    <span class="btn-wrap"> 
     <a href="#" data-target-modal="CustomIdForEachModal4" class="btn btn--default btn--s">Send</a> 
    </span> 
    </li> 
    <li> 
    Six 
    <span class="btn-wrap"> 
     <a href="#" data-target-modal="CustomIdForEachModal5" class="btn btn--default btn--s">Send</a> 
    </span> 
    </li> 
    <li> 
    Seven 
    <span class="btn-wrap"> 
     <a href="#" data-target-modal="CustomIdForEachModal6" class="btn btn--default btn--s">Send</a> 
    </span> 
    </li> 
</ul> 

而且我想點擊一個具有文本「十一五」的「發送」按鈕。

我曾嘗試:

element = $driver.find_elements(css: 'li').select {|el| el.text == 'Five'}.first 
element.click 

和:

$driver.find_element(xpath: /a[contains(text(),'Five').click 

我一直在努力做到這一點使用硒webdriver的,但不能讓它開始工作。任何幫助表示讚賞。

例子: http://imgur.com/a/GpYss

+0

它是某種形式的菜單列表中的哪個來後點擊一份菜單 ? – NarendraR

+0

這是帶有三個LI的UL的一部分,我想單擊列表中相應項的按鈕:https://imgur.com/a/GpYss – DeFi312

+0

@NarendraRajput我已經添加了這個例子,你能請再看一次? (Selenium :: WebDriver :: Er ror: – DeFi312

回答

0

xpath您使用的是不準確的。嘗試

$driver.find_element(xpath: "//li[contains(text(),'Five')]//a").click 

您也可以嘗試明確的等待,以確保該按鈕存在

wait = Selenium::WebDriver::Wait.new(:timeout => 10) 
button = wait.until { driver.find_element(:xpath => "//li[contains(text(),'Five')]//a") } 
button.click 
+0

我得到:給定xpath表達式「// li [contains(text(),'Five'] // a」無效:SyntaxError:表達式不是合法表達式(Selenium :: WebDriver :: Er ror: :InvalidSelectorError) – DeFi312

+0

解決了表達式錯誤,但現在我得到一個「無法定位元素」這是xpath裏面的按鈕?不應該有一個引用按鈕文本「發送」? – DeFi312

+0

@ DeFi312這個html是否在'