我正在使用下面的HTML来模拟链接单击,其中嵌套在“watir-webdriver”中。
<li>
<div class="drop-head">
<ul>
<li>
<a href="#hotel" aria-label="go to Hotels" title="Hotels">Hotels</a>
</li>
.....
</ul>
</div>我的脚本非常基本:
require 'watir-webdriver'
browser = Watir::Browser.new :firefox
browser.goto "https://www.acme,com/reserve"
wait = Selenium::WebDriver::Wait.new(:timeout => 5)
menu = browser.div(:class => "drop-head").li.a(:href => "#hotel").click在控制台中,我看到以下错误:
C:/apps/Ruby23/lib/ruby/gems/2.3.0/gems/watir-webdriver-0.9.9/lib/watir-webdriver/elements/element.rb:536:in `assert_element_found': unable to locate element, using {:href=>"#hotel", :tag_name=>"a"} (Watir::Exception::UnknownObjectException)
from C:/apps/Ruby23/lib/ruby/gems/2.3.0/gems/watir-webdriver-0.9.9/lib/watir-webdriver/elements/element.rb:508:in `assert_exists'
from C:/apps/Ruby23/lib/ruby/gems/2.3.0/gems/watir-webdriver-0.9.9/lib/watir-webdriver/elements/element.rb:114:in `click'
from script4.rb:7:in `<main>'在这方面有什么帮助吗?
发布于 2017-02-05 13:06:18
这个问题可能是对元素路径的过度说明。当你这样做时:
menu = browser.div(:class => "drop-head").li.a(:href => "#hotel").click它实际上找到了第一个匹配的“下降头”div,并在其中找到了第一个li元素。考虑到每个链接可能在其自己的li元素中,您将只会找到第一个链接。例如:
<div class="drop-head">
<ul>
<li>
<a href="#hotel" aria-label="go to Hotels" title="Hotels">Hotels</a>
</li>
<li>
<a href="#restaurants" aria-label="go to Restaurants" title="Restaurants">Restaurants</a>
</li>
</ul>
</div>寻找第二个链接,“#餐馆”:
browser.div(:class => "drop-head").li.a(:href => "#restaurants")实际上是在寻找第一个li元素中的链接:
<li>
<a href="#hotel" aria-label="go to Hotels" title="Hotels">Hotels</a>
</li>解决方案是只在实际需要时指定元素的路径来区分元素。假设该href只有一个链接,那么您很可能只需这样做:
browser.a(:href => "#hotel").clickhttps://stackoverflow.com/questions/42051157
复制相似问题