这是我做的:
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()事件有时不会被触发?
有时,看似随机,Selenium只是不喜欢点击某些锚标签.我不确定是什么导致它,但它发生了.在那些情况下,我发现有一个麻烦的链接,而不是做
selenium.click(...)
做
selenium.fireEvent( locator, 'click' );
正如其他人在我上面所述,我特别关注锚标记,如下所示: