尝试单击下拉菜单中的链接,该链接只能通过将鼠标悬停在元素上来访问

Trying to click a link in a dropdown which can only be accessed by hovering over an element

本文关键字:链接 悬停 鼠标 访问 元素 下拉菜单 单击      更新时间:2023-09-26

我试图在一个下拉菜单中点击一个元素(链接),这只在悬停在一个元素上时出现。不幸的是,我不能提供一个链接到网站的问题正在发生,因为功能是不可用的在我们的现场现场尚未。下面是与此问题相关的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 groups找到一些答案,如果我能指出正确的方向,我将非常感激。谢谢大家。

运行环境:Mac OSX 10.7.5, Firefox 19.0.2, Ruby 1.9.3p194, watir-webdriver 0.6.2

I just try:

@browser.link(:text, 'Menu').fire_event('onmouseover'),      
@browser.li(:class, 'sub-menu', :text, 'Sign out').link.click   
我得到的错误是:
期望散列或(:how, 'what'),得到[:class, "sub-menu",:text, "Sign out"] (ArgumentError)。
现在我很困惑

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

下面的操作用于展开菜单,然后单击退出链接:

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

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

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

感谢Justin和Bala为我指明了正确的方向。