gpt4 book ai didi

unit-testing - Selenium 的 Open 函数等到什么?

转载 作者:行者123 更新时间:2023-12-04 07:03:30 24 4
gpt4 key购买 nike

当我在 Selenium 中调用 Open("[some URL]") 方法时,它会等到所有资源(图像、CSS、JS)都下载完毕。但是它怎么知道浏览器请求资源已经完成了呢?

这是我的驱动程序代码片段(在 C# 中):

DefaultSelenium selenium = new DefaultSelenium(
"localhost", 4444, "*iexplore", "http://www.stackoverflow.com");

// open my profile page
selenium.Open("http://stackoverflow.com/users/111934/jeff-meatball-yang");

以上网址仅供引用。如果我在 setTimeout() 中有一个很长的延迟包裹的 AJAX 调用在体内触发 onload事件处理程序,Selenium 在继续之前实际上不会等待那个 AJAX 调用......我必须手动告诉 Selenium 等待使用 WaitForPageToLoad(timeout) .

那么 Selenium 如何检测正常页面(没有 AJAX)何时完成加载?

最佳答案

我相信它会等待 location.href 可用,这意味着如果您在此之后运行 AJAX,您还需要使用 waitForCondition。

selenium.open("http://www.example.com/");
selenium.waitForCondition("var value = selenium.getText('id=pageLoadStatus'); value == 'Loaded'", "60000");

以下是来自 Selenium 核心的当前页面加载检测代码:
this.recordPageLoad = function(elementOrWindow) {
LOG.debug("Page load detected");
try {
if (elementOrWindow.location && elementOrWindow.location.href) {
LOG.debug("Page load location=" + elementOrWindow.location.href);
} else if (elementOrWindow.contentWindow && elementOrWindow.contentWindow.location && elementOrWindow.contentWindow.location.href) {
LOG.debug("Page load location=" + elementOrWindow.contentWindow.location.href);
} else {
LOG.debug("Page load location unknown, current window location=" + this.getCurrentWindow(true).location);
}
} catch (e) {
LOG.error("Caught an exception attempting to log location; this should get noticed soon!");
LOG.exception(e);
self.pageLoadError = e;
return;
}
self.newPageLoaded = true;
};

关于unit-testing - Selenium 的 Open 函数等到什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1460481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com