首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用“watir-webdriver”模拟嵌套链接单击

用“watir-webdriver”模拟嵌套链接单击
EN

Stack Overflow用户
提问于 2017-02-05 10:52:49
回答 1查看 216关注 0票数 1

我正在使用下面的HTML来模拟链接单击,其中嵌套在“watir-webdriver”中。

代码语言:javascript
复制
<li>
<div class="drop-head">
<ul>
    <li>
        <a href="#hotel" aria-label="go to Hotels" title="Hotels">Hotels</a>
    </li>
.....
</ul>
</div>

我的脚本非常基本:

代码语言:javascript
复制
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

在控制台中,我看到以下错误:

代码语言:javascript
复制
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>'

在这方面有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-05 13:06:18

这个问题可能是对元素路径的过度说明。当你这样做时:

代码语言:javascript
复制
menu = browser.div(:class => "drop-head").li.a(:href => "#hotel").click

它实际上找到了第一个匹配的“下降头”div,并在其中找到了第一个li元素。考虑到每个链接可能在其自己的li元素中,您将只会找到第一个链接。例如:

代码语言:javascript
复制
<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>

寻找第二个链接,“#餐馆”:

代码语言:javascript
复制
browser.div(:class => "drop-head").li.a(:href => "#restaurants")

实际上是在寻找第一个li元素中的链接:

代码语言:javascript
复制
<li>
 <a href="#hotel" aria-label="go to Hotels" title="Hotels">Hotels</a>
</li>

解决方案是只在实际需要时指定元素的路径来区分元素。假设该href只有一个链接,那么您很可能只需这样做:

代码语言:javascript
复制
browser.a(:href => "#hotel").click
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42051157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档