英文:
Webdriver wait for complete page to load
问题
以下是代码部分的中文翻译:
browser.waitUntil(
() => browser.execute(() => document.readyState === 'complete'),
{
timeout: 60 * 1000, // 60秒
timeoutMsg: '加载失败时的消息'
}
);
这段代码用于等待页面完全加载。您可以将它放在脚本的以下位置:
"Where exactly I have to put this readyState code in script?
Currently I am adding this LOC after navigating any new page and before code where loading is happening."
英文:
Is there any way to make webdriverio wait for a complete page to load?
I dont want to use browser.setTimeout({ 'pageLoad': 10000 }), because I dont know how much time it will take to load complete page
I tried below code but it didn't worked,
browser.waitUntil(
() => browser.execute(() => document.readyState === 'complete'),
{
timeout: 60 * 1000, // 60 seconds
timeoutMsg: 'Message on failure'
}
);
Where exactly I have to put this readyState code in script?
Currently I am adding this LOC after navigating any new page and before code where loading is happening.
答案1
得分: 1
了解您的担忧,关于超时问题。假设您正在遵循页面对象模式(https://webdriver.io/docs/pageobjects/),您可以将其添加为页面类的基本方法。例如:
class WhateverPage {
open(path): void {
browser.url(path);
this.waitForPageLoad(); // 在此处添加页面加载条件
}
waitForPageLoad(): void {
browser.waitUntil(
() => browser.execute(
() => document.readyState === 'complete'),
{
timeout: 60 * 1000, // 60秒
timeoutMsg: '失败时的消息'
}
)
)
}
}
现在,在您的测试中,当您作为开始步骤执行 Page.open() 时,它应该在执行任何其他操作之前等待页面加载。在执行页面转换时,您还可以单独使用 waitForPageLoad 方法。希望这有所帮助!
英文:
I understand your concerns, regarding timeouts. Assuming you are following the page object pattern (https://webdriver.io/docs/pageobjects/), you can add that as a base method for your Page class. For example:
class WhateverPage {
open(path): void {
browser.url(path);
this.waitForPageLoad(); // add your is loaded conditions here
}
waitForPageLoad(): void {
browser.waitUntil(
() => browser.execute(
() => document.readyState === 'complete'),
{
timeout: 60 * 1000, // 60 seconds
timeoutMsg: 'Message on failure'
}
)
)
}
}
Now in your test when you do as a beggining step Page.open() it should wait for the page to be loaded before it does anything else. You can also use the waitForPageLoad method here by itself when you do page transitions. Let me know if this helps!
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论