只要预期元素存在,Selenium就会停止页面加载

时间:2016-08-20 15:33:17

标签: java selenium

我使用Java在Selenium上创建了一些测试用例。不幸的是,当我点击页面上的某个元素时,在我继续执行任何其他操作之前,我必须等到页面加载。

我试过了driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);。不幸的是,这造成了另即使页面加载,它也会在开始在页面上进行测试之前等待30秒。

我发现最好的方法是发送ESCAPE键来停止页面加载。

无论如何我可以检查元素是否存在以及何时存在,将ESCAPE键发送到浏览器以停止页面加载?

这部分让我大吃一惊,因为我必须等到页面加载,然后Java才会读取下一行代码,这样我才能将ESCAPE键发送到浏览器,直到页面实际停止加载为止。

修改

我刚刚尝试使用新线程来完成这项工作,但似乎driver完全被锁定,在页面停止加载之前无法对其进行任何处理。

我暂时没有想法,但我相信应该有办法。

使用timeouts()导致整个测试用例停止。

2 个答案:

答案 0 :(得分:2)

首先,我想说这不是最佳做法。 selenium click方法指出,如果click触发页面加载,selenium将尽力阻止,直到加载页面。您可以尝试通过JavaScript发送点击事件,而不是通过点击方法点击。然后等待正常的元素。

答案 1 :(得分:1)

您可以尝试driver.manage()。timeouts()。pageLoadTimeout(10,TimeUnit.SECONDS);它应该在超时结束后抛出错误。我从来没有使用它,但也许你可以尝试捕捉这个错误并继续你的测试。但是你的页面可能最终处于不稳定状态,所有内容都没有加载,测试与元素交互。