java怎么清楚页面加载_java – Selenium – 如何等到页面完全加载

参见英文答案 > Wait for page load in Selenium                                    46个

我正在尝试使用Java和Selenium WebDriver自动化一些测试用例.我有以下场景:

>有一个名为’Products’的页面.当我点击“查看详细信息”链接时

在“产品”页面中,会出现一个包含该项目详细信息的弹出窗口(模态对话框).

>当我点击弹出窗口中的“关闭”按钮时,弹出窗口关闭

页面自动刷新(页面只是重新加载,内容保持不变).

>关闭弹出窗口后,我需要点击“添加项目”按钮

同一页.但是当WebDriver试图找到“添加项目”按钮时,

如果互联网速度太快,WebDriver可以找到并点击

元件.

>但是如果互联网很慢,WebDriver会在之前找到按钮

页面刷新,但只要WebDriver单击该按钮,页面就会刷新并发生StaleElementReferenceException.

>即使使用了不同的等待,所有等待条件也都成立

(因为重新加载前后页面中的内容相同)

甚至在重新加载页面和StaleElementReferenceException之前

发生.

如果Thread.sleep(3000);测试用例可以正常工作在单击“添加项目”按钮之前使用.这个问题还有其他解决方法吗?

解决方法:

3个答案,你可以结合:

1.)在创建Web驱动程序实例后立即设置隐式等待:driver.manage().timeouts().implicitlyWait().这将尝试等到页面在每个页面导航或页面重新加载时完全加载.

2.)页面导航后,调用JavaScript返回document.readyState直到返回“complete”. Web驱动程序实例可以充当JavaScript执行程序.示例代码:

C#

new WebDriverWait(driver, MyDefaultTimeout).Until(

d => ((IJavaScriptExecutor) d).ExecuteScript("return document.readyState").Equals("complete"));

Java的

new WebDriverWait(firefoxDriver, pageLoadTimeout).until(

webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete"));

3.)在2.)之后,检查URL是否与您期望的模式匹配.

标签:java,selenium-webdriver

来源: https://codeday.me/bug/20190925/1817534.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值