Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selenium在预期元素存在时立即停止页面加载_Java_Selenium - Fatal编程技术网

Java Selenium在预期元素存在时立即停止页面加载

Java Selenium在预期元素存在时立即停止页面加载,java,selenium,Java,Selenium,我使用Java在Selenium上创建了几个测试用例。不幸的是,当我单击页面上的某个元素时,在我可以继续执行任何其他操作之前,我必须等待页面加载 我尝试了driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS)。不幸的是,这造成了另一个问题。即使页面加载,它也会等待30秒,然后才开始在页面上进行测试 我发现最好的方法是发送ESCAPE键停止页面加载 我是否可以检查元素是否存在,当它存在时,向浏览器发送ESCAPE键以停止页面加载

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

我尝试了
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS)。不幸的是,这造成了另一个问题。即使页面加载,它也会等待30秒,然后才开始在页面上进行测试

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

我是否可以检查元素是否存在,当它存在时,向浏览器发送
ESCAPE
键以停止页面加载

这一部分困扰着我,因为我必须等到页面加载之后,Java才能读取下一行代码,所以在页面实际停止加载之前,我无法向浏览器发送
ESCAPE

编辑

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

我暂时没有主意,但我相信应该有办法


使用
超时()
会导致整个测试用例停止。

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

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

是,它会抛出一个错误,然后它就不能完全按照预期工作。更不用说,如果在10秒内,元素不存在,这将产生另一个级别的问题。这就是为什么我要等待元素出现,一旦元素出现,就用sending
ESCAPE
键停止页面加载。这就是为什么我不能使用
pageLoadTimeout
我也尝试过。加载什么需要时间?图像?看看这个问题,特别是@kyrenia answer。不过,这是针对firefox的,谢谢你的链接,在某些情况下,它肯定会很有用。这取决于每页,有时css,图像,js。。。外部资源。。。更不用说,至少在大多数情况下,我可能需要这些可用的资源。我通常在新功能/网站上进行此类测试。其中一些是全新的。有时我会在同一页上测试100多次(在不同的条件下)。通过JavaScript发送点击事件不会增加跳出率吗?如果是这样的话,我不认为每个人都会喜欢。你在生产中运行测试?然后,是的,你必须和监测噪音的人核实一下。还可能希望了解如何让测试服务器在其上运行测试,以避免破坏分析,这通常是我关心的问题。当我在测试/登台环境上进行测试时,我并不介意这些问题。当它在生产环境中时,我只想尽快完成它。