因此,我遇到了这个问题,那里到处都有一些微调器,我想等到这些微调器不再连接到DOM中。
不需要太多的JS,但是在Selenium中,您可以使用以下谓词:
v <- c(1, 2, 3)
names(v) <- c("a", "b", "c")
str(v)
。
到目前为止,我已经完成了以下工作:
Named num [1:3] 1 2 3
- attr(*, "names")= chr [1:3] "a" "b" "c"
Wait.Until(driver => driver.findElements(By.Xpath("XPATH")).Count < 0)
是 async fillSearch(value: string) {
await this.searchInput.then(x => x.click({ clickCount: 3 }));
await this.page.keyboard.press("Backspace");
await this.searchInput.then(x => x.type(value));
...//HERE I HAVE TO WAIT FOR THE SPINNER TO GO...
}
检索到的this.searchInput
。
我有一个名为Promise<ElementHandle>
的道具,它检索page.$x("xpathOfInput")
,因此,当Promise解决后,我可以获取数组的this.spinners
并知道是否在DOM上建立了任何元素。 / p>
所以问题将是:
是否有一种方法可以使用Promise<ElementHandle[]>
之类的方法来等待诺言得到解决,然后比较lenght
并等待直到发生这种情况?
我认为必须有一种方法可以在waitFor上使用谓词来实现相同目的,但到目前为止,我还无法将其撤出...
答案 0 :(得分:2)
page.waitForXPath
最简单的方法是将page.waitForXPath
与选项hidden
设置为true
一起使用:
await page.waitForXPath('XPATH', { hidden: true });
这将等到元素不再存在于DOM中或被隐藏(通过CSS)。
page.waitForFunction
或者,您可以使用page.waitForFunction
等到您提供的函数返回true为止。通过使用document.evaluate
评估XPath表达式,您可以等待条件变为true
为止。
由于元素已经包含在变量中,因此可以使用page.waitForFunction
并将元素作为args
传递:
await page.waitForFunction(element => element.parentNode === null, {}, spinnerElement);
您可能需要根据删除节点的方式更改检查功能。