无法使用fire_event和.hover进行悬停

时间:2014-09-16 20:58:59

标签: ruby selenium-webdriver cucumber watir watir-webdriver

以下是HTML内容。在使用watir进行悬停时,我需要显示以下列表,该列表手动发生。

<li class=" dropdown">
    <a class="dropdown-toggle" data-toggle="dropdown" ceid="MM - Tour" href="/product-tour">
      Tour 
      <b class="caret"/>
    </a>
    <ul class="dropdown-menu dropdown-tour depth-1 row">
      <li class=" col-md-3">
      <li class=" col-md-3">
      <li class=" col-md-3">
      <li class=" col-md-3">
    </ul>
</li>
  1. 使用fire_event“onmouseover”,在irb中返回true。但是没有执行悬停,列表也没有显示。下面是irb输出。

    IRB(主):035:0&GT; b.link(:text =&gt;'Tour')。present?
    =&GT;真正
    IRB(主):036:0&GT; b.link(:text =&gt;'Tour')。fire_event“onmouseover”
    =&GT;真

  2. 使用.hover时,面对以下错误。

    Selenium :: WebDriver :: Error :: InvalidElementStateError:无法执行本机交互:无法加载本机事件组件。         来自[remote server] file:/// C:/ Users / SRIRAM~1 / AppData / Local / Temp / webdri ver-profile20140917-6780-x3gs6b/extensions/fxdriver@googlecode.com/components/dr iver_component.js:9770 :3:在`generateErrorForNativeEvents'

  3. 以下是我的宝石版本。

    watir-webdriver (0.6.10)
    selenium-webdriver (2.42.0)
    
    Firefox Browser version : 30.0
    

    有没有其他方法可以使用watir webdriver执行鼠标悬停?

    的问候,
    Avinash Duggirala

1 个答案:

答案 0 :(得分:2)

使用hover时,下拉列表会在一秒钟内显示,然后消失。似乎页面认为鼠标移动到Tour链接然后移开。鉴于hover在Chrome中有效,我可能会说这是Firefox驱动程序的问题。

您可以通过使用Javascript强制显示下拉列表来解决此问题 - 即更改显示样式来自&#34; none&#34;到&#34;阻止&#34;:

dropdown = b.link(:text => 'Tour').parent.ul
b.execute_script('arguments[0].style.display="block";', dropdown)