【问题标题】:Watir: fire_event is not working where as click works fine in IEWatir:fire_event 在 IE 中点击可以正常工作的地方不起作用
【发布时间】:2012-03-05 13:32:06
【问题描述】:

下面的代码不起作用:

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

而这段代码运行良好:

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

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

【问题讨论】:

  • 了解您正在尝试完成的操作以及您期望“onmouseover”在这种情况下执行的操作可能会有所帮助。或者换句话说,你如何根据你期望发生的事情来定义“工作”?您是否期望“onmouseover”事件单击链接?那不太可能。 'onclick' 可能,但如果 .click 正在工作,为什么要使用它。您为什么要尝试使用该事件,您希望看到什么反应?

标签: ruby automation cucumber watir watir-webdriver


【解决方案1】:

请记住,点击某物的动作可能会触发许多不同的事件,包括

  • onmousemove 的
  • 鼠标悬停
  • onmousedown
  • onmouseup
  • 点击
  • 鼠标退出

这个问题和答案可能有用:How to find out which JavaScript events fired? 作为一种了解在您执行某些过程(例如将鼠标移到某个对象上并单击它)时触发哪些事件的方法。

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

然而,要真正给你提供的不仅仅是基本信息,并提供具体的答案,你将不得不分享更多关于正在发生的事情、你想要实现的事情、正在发生的事情等等,因为正确现在,我们任何人都需要大量的读心术才能了解您的挑战是什么,以及您目前如何尝试克服它。

【讨论】:

    【解决方案2】:

    我最后一次检查 .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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 2013-12-13
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多