问题描述
我每天使用 Playwright 1.12 + Chromium 90 重新启动路由器。
我的脚本导航到路由器的页面 1.1.1.1/reset.asp
然后脚本单击按钮,接受对话框,然后在路由器内部发生魔术。
现在我有两个选项可以确保路由器已成功重新启动:
- 检测浏览器中的连接是否“离线”(这是一个好兆头,我希望等待此事件)
- 等到
page.url()
更改为1.1.1.1
(当路由器再次启动时,浏览器中的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。
此外,我建议您将 pubspec.yaml
用于您的点击/弹出逻辑,请参阅 here 以了解有关它的更多信息,因为这样您的流程就不会嵌套在发出的事件中。