Java的driver_关于java:driver.get()到底是做什么的?

WebDriver文档指出driver.get()操作的以下内容:

Dependent on several factors, including the OS/Browser combination,

WebDriver may or may not wait for the page to load. In some

circumstances, WebDriver may return control before the page has

finished, or even started, loading

任何人都可以解释在页面加载完成甚至开始加载之前,WebDriver在什么情况下会返回控制权吗?

顺便说一句,我喜欢你的名字:)

嗨@Saifur。 让我们通过我的个人资料中提供的表格进行联系。

.get()以简单的形式将您导航到URL。

Can anyone explain under what circumstances WebDriver returns control

before the page has finished, or even started, loading?

如今,这种情况非常普遍-异步加载的页面越来越多。 Selenium不会等待对未完成的AJAX请求或当前正在运行的脚本的响应,而这些脚本可能会在尝试访问DOM中不存在,尚不可见或尚不具有所需数据的元素时导致不同的错误。

顺便说一下,这就是protractor包专门用于AngularJS应用程序测试的原因之一-它侦听一个角度以表示"好,我已经完成了此页面"。

等待页面加载有多种方法:

增加"页面加载超时"(不太可靠)

等待DOM readyState完成

明确地等待特定元素出现在DOM中或可见-这种方法是最常见和最可靠的

这是一个完美的答案,应该有助于清理问题。

另请参阅相关主题,并对问题进行一些很好的解释:

等待硒中的页面加载

如何检查网页驱动程序中是否完全加载了页面?

Selenium WebDriver:等待带有JavaScript(JS)的复杂页面加载

这取决于您使用的WebDriver。

在几乎每个WebDriver中,在加载文档后都可以进行控制。这意味着onDocumentReady JavaScript回调可能尚未完成。

为了避免这种情况,可以使用带有适当谓词的WebDriverWait或FluentWait。

也可以使用Thread.sleep(),但这是一种相当肮脏的方式!

当您说"在文档加载后给出控制权"时,WebDriver如何定义"文档加载"?

取决于驱动程序。 您可以为此查看GrepCode。 这是HtmlUnitDriver的示例:grepcode.com/search/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值