Selenium IDE - JQuery 点击事件处理程序未触发

5

我想使用FF Selenium IDE插件测试一个页面。

这个页面有如下的菜单结构...

<ul class="parent">
   <li class="child"><span><a href="something.html">link text</a></span></li>
   <li class="child"><span><a href="somethingelse.html">other text</a></span></li>
<ul>
  • 元素绑定了 hover 事件。这些 hover 事件在实际的链接标签上注册了 click 事件。(为简化起见,我已经删除了一些 JavaScript)
  •   var menu = $('ul.parent');
    
      $("> li.child", menu).hover(function () {
    
        $(this).find('> a').click(function () {             
          $(this).parent().addClass('active-trail');
          return false;
        });
      }, function() {});
    

    如果我使用Selenium点击其中一个链接,那么我期望处理程序被调用。但实际上没有,只是执行了点击操作(并且链接被跟踪),而不是返回false。
    我已经尝试过(在阅读其他答案后)mouseUp和mouseDown。我还尝试使用fireEvent首先悬停在li上(以激活悬停事件),然后再使用另一个fireEvent单击anchor...但也不起作用。
    因此,任何帮助都将不胜感激。仅演示如何使用Selenium触发jquery提供的单击处理程序可能就足以让我明白!
    谢谢,Patrick.
    2个回答

    2

    你对于使用 fireEvent() 是正确的,但你确定你使用它是正确的吗?

    如果你想触发 onClick 处理程序,你需要使用 fireEvent(locator, "click") 而不是 fireEvent(locator, "onClick")

    如果你使用 Selenium IDE 生成脚本,那么你很可能已经做到了这一点。

    Selenium 在这个领域有些问题,我也遇到过很多类似的问题。


    是的,肯定可以使用“hover”和“click”作为处理程序。很高兴知道我正在寻找正确的领域! - patrickdavey
    可能是Selenium在尝试点击之前没有等待悬停执行的缘故,请尝试在这两个命令之间添加一个等待时间。 - mark-cs
    我尝试使用暂停,但并没有什么区别。有趣的是,如果我加载页面,将鼠标移动到元素上(有效地手动触发悬停),然后运行点击事件 - 那么菜单就会显示出来。 - patrickdavey
    1
    啊,我的错误 - 最终我需要先使用mouseOver事件 - 然后才能调用click事件,这样它才有效。 - patrickdavey

    1

    你尝试过使用xpath吗?

    selenium.Click("xpath=/descendant::li[contains(.,"something")][2]/x:a")


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接