如何等到 URL 更改/或直到连接离线

How to wait until URL change / or until connection is offline

我正在使用 Playwright 1.12 + Chromium 90 每天重启路由器。
我的脚本导航到路由器的页面 1.1.1.1/reset.asp
然后脚本点击按钮,接受对话框,路由器内部发生了魔法。
现在我有两个选项来确保路由器已成功重启:

  1. 检测浏览器中的连接是否“离线”(这是一个好兆头,我希望等待此事件)
  2. 等到 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 了解更多信息,因为这样您的流程就不会嵌套在发出的事件中。