Watir:fire_event无效,因为在IE中点击工作正常

时间:2012-02-14 06:15:20

标签: ruby automation cucumber watir watir-webdriver

以下代码不起作用:

browser.link(:id => "tab_buy").fire_event ("onmouseover")

这段代码效果很好:

browser.link(:id => "tab_buy").click效果很好。

IE和Firefox都是如此。如果有任何解决方法,请告诉我。

2 个答案:

答案 0 :(得分:0)

我最后一次检查.fire_event(“onmouseover”)至少在Firefox中没有实现(watir-webdriver)(这是几个月前的事情)。

我目前解决这个问题的方法是使用以下方法:

在我所有测试中包含的文件中:

class Watir::Element
 def hover
  assert_exists
  driver.action.move_to(@element).perform
 end
end

这为每个元素提供了一个悬停方法,使用方法如下:

browser.div(:id => "someId").hover

这就是我到目前为止处理悬停事件的方式。这是由Jari Bakken在测试期间遇到与.fire_event("onmouseover")类似的问题时提出(提供)的。

我不确定这是否适用于IE,因为我们这里只使用Firefox。

答案 1 :(得分:0)

请记住,点击某些内容的行为有可能引发许多不同的事件,包括

  • onmousemove的
  • onmouseover
  • onmousedown
  • onmouseup
  • onclick
  • 的onmouseout

这个问题和答案可能有用:How to find out which JavaScript events fired?作为一种方法来了解当你执行某些过程时会触发什么事件,例如将鼠标移到某个对象上并点击它。

如果你的目标是点击链接,那么使用.click通常是实现这一目标的最直接,最简单的方法。另一方面,如果您正在进行基于Javascript或CSS的操作(常见于强大的自定义控件,模拟下拉菜单等),那么您可能需要触发事件才能发生事情,例如鼠标移动时出现的菜单在下拉菜单中的顶部项目。 (这也可能很棘手,因为CSS对'hover'动作定义的'伪类'的反应方式与基于事件的javascript工作方式不同。

为了真正给你更多的基本信息,并提供一个具体的答案,你将不得不分享更多关于正在发生的事情,你想要发生什么,发生了什么等等,因为正确现在要让我们中的任何一个人了解你的挑战是什么,以及你目前如何试图克服它,需要花时间阅读。