首页 > 解决方案 > 等待页面在硒中完全加载节点js

问题描述

如何让我的代码等到页面在 Nodejs 中完全加载?我使用 selenium-webdriver 版本 4.0.0

  const driver = new Builder().forBrowser("firefox").build();
  await driver.get("http://www.tsetmc.com/Loader.aspx?ParTree=15131F");
  // here we should wait but how?

标签: javascriptnode.jsseleniumselenium-webdriver

解决方案


这里有两个概念 - 有:

  • 页面加载时间 - 页面和内容下载的时间(......这会下载脚本),然后......
  • 脚本加载时间 - 脚本运行、获取更多数据和填充页面的时间

页面加载时间相对容易 - 但默认情况下启用此功能,如果您已经遇到问题,可能无济于事。

对于脚本加载时间,您需要一个对象进行同步。 selenium 文档很好地概述了不同的等待策略,并提供了不同语言的代码示例。

查看您的页面,您很可能想尝试显式等待。在 Javascript 中,这是:

 await driver.wait(until.elementLocated(By.id('foo')), 30000);

您可以将By标识符更新为页面上的最后一个项目,或者对需要与之交互的每个项目使用此方法。

根据您需要的状态,相同的页面还列出了其他预期条件。

最后一点,如果您不知道selenium 4 仍在 alpha 中。如果您需要新功能,您可以访问它,但它们仍在测试中,并且会经常更改。如果您不需要 selenium 4 的新功能,您可能需要回滚到最新的稳定版本


推荐阅读