当前位置:  开发笔记 > 编程语言 > 正文

Selenium click()事件似乎不总是被触发=>导致超时?

如何解决《Seleniumclick()事件似乎不总是被触发=>导致超时?》经验,为你挑选了1个好方法。

这是我做的:

selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);

// do something, then navigate to a different page 
// (window focus is never changed in-between)

selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);

链接"mylink"确实存在,click()的第一次调用始终有效.但是第二次点击()有时似乎有效,有时则不然.

看起来似乎根本没有触发click()事件,因为页面甚至没有开始加载.不幸的是,这种行为是不确定的.

这是我已经尝试过的:

    设置更长的时间超时
    =>没有帮助

    加载一个页面后等待元素存在
    =>不起作用,因为页面甚至没有开始加载

现在我最终调用了click()两次,所以:

selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);

// do something, then navigate to a different page 
// (window focus is never changed in-between)

selenium.click("link=mylink");
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);

这会奏效,但这不是一个非常好的解决方案.我也在另一个论坛上看到有人建议写一些像'clickAndWaitWithRetry'的东西:

  try {
      super.click("link=mylink");
      super.waitForPageToLoad(60000);
  }
  catch (SeleniumException e) {
      super.click("link=mylink");
      super.waitForPageToLoad(60000);
  }

但我认为这也不是一个合适的解决方案....任何想法/解释为什么click()事件有时不会被触发?



1> Andrew Marti..:

有时,看似随机,Selenium只是不喜欢点击某些锚标签.我不确定是什么导致它,但它发生了.在那些情况下,我发现有一个麻烦的链接,而不是做

selenium.click(...)

selenium.fireEvent( locator, 'click' );

正如其他人在我上面所述,我特别关注锚标记,如下所示:



ASP.NET LinkBut​​ton控件将自动变为带有"javascript:__ doPostback(*"(当呈现为HTML)时的锚点.将LinkBut​​ton转换为Button非常容易.但是,如果您有一个硬编码的HTML锚标记调用JavaScript,你可能对这个工具运气不好.我认为点击永远不会发生,因为Selenium在幕后使用JavaScript,并且可能会覆盖主播的工作 - 调用JavaScript.
推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有