laoshan 发表于 2016-11-10 17:17:35

求指点,中止页面加载的方法

当Get一个页面的时候,如果页面加载时间比较长,会一直在超时时间内等待,哪怕要定位的一些静态的内容已经被加载也要等待,很不舒服。

不知各位是怎么解决这个问题的,即在规定时间内中止页面加载?

先抛个砖,实验可以做到(针对Firefox浏览器),但是感觉这么做的味道不好,求更精准的解决方案

        public static void main(String[] args) {
       
                WebDriver driver = new FirefoxDriver();
                driver.manage().window().maximize();

                // 超时并不是中止页面加载,只是抛出异常
                driver.manage().timeouts().pageLoadTimeout(1, TimeUnit.SECONDS);
                try{
                        driver.get("http://localhost/testweb/PageLoadTest/JS_LoadLotPic.html");
                } catch(Exception e){
                        System.out.println("页面加载超时!!开始中止加载!!");
               
                        // 执行同步JS方法中止页面加载 —— 失效
                        // ((JavascriptExecutor)driver).executeScript("document.execCommand('stop');");
                       
                        // 模拟Firefox 按下 Esc键方法中止加载 —— 成功
                        new Actions(driver).sendKeys(Keys.ESCAPE).perform();
                }
        }

laoshan 发表于 2016-11-11 14:16:13

本帖最后由 laoshan 于 2016-11-11 14:29 编辑

清晨一缕阳光 发表于 2016-11-11 00:07
可以通过Web driverWait()方法去判断页面元素是否出现,如果出现就认为已经加载完成,如果没有则等待加载( ...
WebDriverWait类只能设置超时时间并抛出异常,但不能中止页面的加载
现在是可以确定需要的元素早就出现了,但是页面没有加载完,WebDriver就会处于等待中,因此需要中断页面的加载,不是判断元素的出现

清晨一缕阳光 发表于 2016-11-11 00:07:27

可以通过Web driverWait()方法去判断页面元素是否出现,如果出现就认为已经加载完成,如果没有则等待加载(在超时时间内)。具体的可以百度下这个方法的使用。

laoshan 发表于 2016-11-11 14:25:47

本帖最后由 laoshan 于 2016-11-11 14:28 编辑

清晨一缕阳光 发表于 2016-11-11 00:07
可以通过Web driverWait()方法去判断页面元素是否出现,如果出现就认为已经加载完成,如果没有则等待加载( ...
这种显示等待,只能判断元素,不能处理页面。catch触发的时候页面可能没有加载完全

滴答滴 发表于 2016-11-16 16:00:52

:handshake

jingzizx 发表于 2016-11-17 21:54:00

学习

syt_1990 发表于 2019-8-1 09:34:39

你好,这个问题解决了吗?

Real_小T 发表于 2019-8-26 01:14:16

本帖最后由 Real_小T 于 2020-3-5 13:45 编辑

你这个方法应该是最简单高效的一个 直接用去high吧

szc123qq 发表于 2020-8-28 15:24:19

:time:

Miss_love 发表于 2020-12-25 13:52:02

:handshake
页: [1]
查看完整版本: 求指点,中止页面加载的方法