首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何以编程方式停止Firefox中的页面加载?

如何以编程方式停止Firefox中的页面加载?
EN

Stack Overflow用户
提问于 2018-05-18 01:15:33
回答 2查看 0关注 0票数 0

我正在使用WebDriver和Firefox运行几个测试。

下面的命令遇到了问题:

WebDriver.get(www.google.com);

使用此命令,WebDriver将一直阻塞直到启动onload事件。虽然这通常需要几秒钟,但在那些从未完成加载的网站上可能需要几个小时。

我想做的是在某个超时之后停止加载页面,以某种方式模拟Firefox的停止按钮。

每次加载页面时,我都尝试执行以下JS代码:

代码语言:txt
复制
var loadTimeout=setTimeout(\"window.stop();\", 10000);

不幸的是,这是行不通的,可能是因为:

由于加载脚本的顺序,所以STOP()方法不能停止加载包含它的文档

EN

回答 2

Stack Overflow用户

发布于 2018-05-18 09:43:42

我做了几件事就能绕过这件事。

首先,为Webriver设置一个超时。例如,

代码语言:txt
复制
WebDriver wd;
... initialize wd ...
wd.manage().timeouts().pageLoadTimeout(5000, TimeUnit.MILLISECONDS);

第二,在执行GET时,将其包装在TimeoutException周围。(我在那里添加了一个UnhandledAlertException捕获项,只是为了更好的度量。)例如,

代码语言:txt
复制
for (int i = 0; i < 10; i++) {
    try {
        wd.get(url);
        break;
    } catch (org.openqa.selenium.TimeoutException te) {
        ((JavascriptExecutor)wd).executeScript("window.stop();");
    } catch (UnhandledAlertException uae) {
        Alert alert = wd.switchTo().alert();
        alert.accept();
    }
 }

这基本上是试图加载页面,但如果超时,它会迫使页面停止通过javascript加载,然后再次尝试获取页面。getCurrentUrl()命令,它也会花费太长时间,发出警报,并要求页面在获得url之前停止加载。

票数 0
EN

Stack Overflow用户

发布于 2018-05-18 10:38:04

我也遇到过同样的问题,似乎没有通用的解决方案。然而,在他们的bug跟踪系统中,有一个关于它的bug

http://code.google.com/p/selenium/issues/detail?id=687

关于该bug的一个注释有一个可能对你有用的解决方法-基本上,它创建一个单独的线程,等待所需的时间,然后尝试模拟在浏览器中按转义键,但这要求浏览器窗口位于最前面,这可能是一个问题。

http://code.google.com/p/selenium/issues/detail?id=687#c4

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档