Итак, я столкнулся с этой проблемой, когда кое-где рендерились счетчики, и я хочу подождать, пока счетчики больше не будут прикреплены к DOM. для этого, но в Selenium вы можете использовать такой предикат, как:
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")
.
У меня есть опора под названием this.spinners
, извлекающая Promise<ElementHandle[]>
, поэтому, когда Promise решено, я могу получить lenght
массива и знать если какой-либо элемент был основан на DOM.
Итак, вопрос будет:
Есть ли способ использовать что-то вроде page.waitFor()
, чтобы дождаться разрешения обещания, а затем сравнивать, если spinners.length < 0
и ждать, пока это не произойдет?
Я полагаю, должен быть способ добиться того же с помощью предиката в waitFor, но пока мне не удается вытащить его ...