无法使用webdriver

时间:2017-01-31 07:37:03

标签: ruby selenium webdriver

我有以下HTML代码。 列表中的项目按随机顺序生成

<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>

我想点击&#34;发送&#34;具有文本&#34;五&#34;。

的按钮

我试过了:

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

并且:

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

我一直在尝试使用selenium webdriver,但无法使用它。任何帮助表示赞赏。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用以下xpath -

.//li[contains(.,'Five')]/span/a[text()='Send']