2017-01-31 96 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是否在'