如何等到 URL 更改/或直到连接离线
How to wait until URL change / or until connection is offline
我正在使用 Playwright 1.12 + Chromium 90 每天重启路由器。
我的脚本导航到路由器的页面 1.1.1.1/reset.asp
然后脚本点击按钮,接受对话框,路由器内部发生了魔法。
现在我有两个选项来确保路由器已成功重启:
- 检测浏览器中的连接是否“离线”(这是一个好兆头,我希望等待此事件)
- 等到
page.url()
更改为 1.1.1.1
(当路由器再次 UP 时,浏览器中的 URL 正在为此更改)
你能告诉我如何实现这两点之一吗?
最好等到浏览器中的连接离线。
示例代码:
async function login() {
// some stuff here
await reset();
}
async function reset() {
// some stuff here
// current URL is 1.1.1.1/reset.asp
page.on('dialog', async dialog => {
await dialog.accept();
// I WANT TO CHANGE THIS DELAY FOR SOMETHING LIKE:
// await waitUntilConnectionGoesDown()
await delay(5000);
await finish(true);
});
await frame.click('#reboot');
// OR HERE WAIT FOR URL CHANGE
// await waitForUrlChange()
// await finish(true);
}
async function finish(success) {
// success ? CLOSING BROWSER : DOING SOMETHING ELSE;
}
Playwright 最近添加了 waitForURL
,您可以使用它,在您的情况下使用较长的超时时间,以等待 URL 导航到新的预期 URL。
此外,我建议您将 Promise.all
用于您的 click/popup 逻辑,请参阅 here 了解更多信息,因为这样您的流程就不会嵌套在发出的事件中。
我正在使用 Playwright 1.12 + Chromium 90 每天重启路由器。
我的脚本导航到路由器的页面 1.1.1.1/reset.asp
然后脚本点击按钮,接受对话框,路由器内部发生了魔法。
现在我有两个选项来确保路由器已成功重启:
- 检测浏览器中的连接是否“离线”(这是一个好兆头,我希望等待此事件)
- 等到
page.url()
更改为1.1.1.1
(当路由器再次 UP 时,浏览器中的 URL 正在为此更改)
你能告诉我如何实现这两点之一吗?
最好等到浏览器中的连接离线。
示例代码:
async function login() {
// some stuff here
await reset();
}
async function reset() {
// some stuff here
// current URL is 1.1.1.1/reset.asp
page.on('dialog', async dialog => {
await dialog.accept();
// I WANT TO CHANGE THIS DELAY FOR SOMETHING LIKE:
// await waitUntilConnectionGoesDown()
await delay(5000);
await finish(true);
});
await frame.click('#reboot');
// OR HERE WAIT FOR URL CHANGE
// await waitForUrlChange()
// await finish(true);
}
async function finish(success) {
// success ? CLOSING BROWSER : DOING SOMETHING ELSE;
}
Playwright 最近添加了 waitForURL
,您可以使用它,在您的情况下使用较长的超时时间,以等待 URL 导航到新的预期 URL。
此外,我建议您将 Promise.all
用于您的 click/popup 逻辑,请参阅 here 了解更多信息,因为这样您的流程就不会嵌套在发出的事件中。