1

我正在尝试单击下拉列表中的元素(链接),该下拉列表仅在将鼠标悬停在元素上时才会出现。不幸的是,我无法提供指向发生问题的站点的链接,因为我们的 Live 站点上还没有可用的功能。有关此问题所涉及的 HTML 代码,请参见下文:

<li class="sub-menu">
  <span class="label">Signed in as</span>
  <span class="val">Xkeek Javed Wezacur</span>
  <a href="#user-actions">Menu</a>
  <ul id="user-actions">
    <li>
    <li>
    <li>
      <a href="/sign_out">Sign out</a>
    </li>
  </ul>
</li>

现在我正在尝试访问并单击代码:

<a>href="/sign_out">Sign out</a>

我尝试了各种解决方案,但每次都会出错。请参阅下面的内容,了解我的尝试和收到的错误:

@browser.li(:class, 'sub-menu').ul(:id, 'user-actions').link(:text, 'Sign out').click  

元素无法滚动到视图中:https ://xxxuat.com/sign_out (Selenium::WebDriver::Error::MoveTargetOutOfBoundsError)

@browser.ul(:id, 'user-actions').link(:text, 'Sign out').click

元素无法滚动到视图中:https ://xxxuat.com/sign_out (Selenium::WebDriver::Error::MoveTargetOutOfBoundsError)

@browser.link(:text, 'Menu').link(:text, 'Sign out').click

无法定位元素,使用 {:text=>"Sign out", :tag_name=>"a"} (Watir::Exception::UnknownObjectException)

@browser.link(:text, 'Sign out').click

元素无法滚动到视图中:https ://xxxuat.com/sign_out (Selenium::WebDriver::Error::MoveTargetOutOfBoundsError)

我曾尝试使用 stackoverflow 和 Google 群组找到一些答案,如果我能指出正确的方向,我将不胜感激。谢谢你们。

环境:Mac OSX 10.7.5、Firefox 19.0.2、Ruby 1.9.3p194、watir-webdriver 0.6.2

我刚试过:

@browser.link(:text, 'Menu').fire_event('onmouseover'),      
@browser.li(:class, 'sub-menu', :text, 'Sign out').link.click   

我得到的错误是:
expected Hash or (:how, 'what'), got [:class, "sub-menu", :text, "Sign out"] (ArgumentError)。
现在我很困惑

4

2 回答 2

2

Watir 只会点击可见的元素。由于退出链接只有在显示子菜单时才可见,因此您需要先显示子菜单。

以下操作可展开菜单,然后单击退出链接:

#Expand submenu
browser.ul(:id => 'account-menu').link(:text => 'Menu').click

#Click sign out
browser.link(:text => 'Sign out').click
于 2013-03-18T16:30:55.113 回答
2

呜呼!!!最后我让它工作了:)。我不得不操纵 javascript 来显示下拉菜单,因为其他所有方法都失败了,这是我的代码:

@browser.execute_script("$('#user-actions').css('left',0);")
@browser.link(:text => 'Sign out').when_present.click

感谢贾斯汀和巴拉为我指明了正确的方向。

于 2013-03-19T10:33:46.330 回答