Javascript selenium,等待页面完全加载



我正试图在网页上使用selenium,但我的代码不能始终如一地工作——有时什么都没发生,driver.wait承诺没有实现——它只是永远等待。。。我的代码如下:

await this.driver.wait(until.elementLocated(By.xpath("xpath1")));
const searchField = await this.driver.findElement(By.xpath("xpath1"));
await searchField.click();
const input = await this.getElement("xpath2");
await input.sendKeys("SearchTerm", Key.RETURN);

为什么它有时有效,有时无效,我知道xpath不会改变,我已经尝试设置非常高的硬编码this.driver.sleep(10000)超时。

试试这个:

driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);

这个是什么:

Selenium中的隐式等待用于告诉web驱动程序在抛出"等待"之前等待一定时间;没有这样的元素例外";。默认设置为0。一旦我们设置了时间,web驱动程序就会在抛出异常之前等待元素一段时间。

SeleniumWebDriver借鉴了Watir的隐式等待思想。

在下面的示例中,我们声明了一个隐式等待,时间范围为10秒。这意味着,如果元素在该时间范围内没有位于网页上,它将抛出异常。

基本语法:

driver.manage().timeouts().implicitlyWait(TimeOut, TimeUnit.SECONDS);   

编辑:如果这对联盟没有帮助,你可以试试这个:

driver.wait(function () {
return driver.isElementPresent(webdriver.By.xpath("yourxpath"));

},超时(;

//事实上,我不太熟悉javascript,但我希望你能理解我的意思

这会使网络驱动程序等待10秒,直到您要查找的元素可见

最新更新