我使用Java在Selenium上创建了一些测试用例。不幸的是,当我点击页面上的某个元素时,在我继续执行任何其他操作之前,我必须等到页面加载。
我试过了driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
。不幸的是,这造成了另即使页面加载,它也会在开始在页面上进行测试之前等待30秒。
我发现最好的方法是发送ESCAPE
键来停止页面加载。
无论如何我可以检查元素是否存在以及何时存在,将ESCAPE
键发送到浏览器以停止页面加载?
这部分让我大吃一惊,因为我必须等到页面加载,然后Java才会读取下一行代码,这样我才能将ESCAPE
键发送到浏览器,直到页面实际停止加载为止。
修改
我刚刚尝试使用新线程来完成这项工作,但似乎driver
完全被锁定,在页面停止加载之前无法对其进行任何处理。
我暂时没有想法,但我相信应该有办法。
使用timeouts()
导致整个测试用例停止。
答案 0 :(得分:2)
首先,我想说这不是最佳做法。 selenium click方法指出,如果click触发页面加载,selenium将尽力阻止,直到加载页面。您可以尝试通过JavaScript发送点击事件,而不是通过点击方法点击。然后等待正常的元素。
答案 1 :(得分:1)
您可以尝试driver.manage()。timeouts()。pageLoadTimeout(10,TimeUnit.SECONDS);它应该在超时结束后抛出错误。我从来没有使用它,但也许你可以尝试捕捉这个错误并继续你的测试。但是你的页面可能最终处于不稳定状态,所有内容都没有加载,测试与元素交互。