Ako čakať na stlmenie stránky (načítanie) po kliknutí na tlačidlo? Skúšal som nasledujúce možnosti, ale zatiaľ som neuspel. Musím zachytiť načasovanie transakcií.
1) Implicitné čakanie
(driver.manage().timeouts().implicitlyWait(20L, TimeUnit.SECONDS);)
2) Explicitné čakanie
(wait = new WebDriverWait(driver, 200);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(//a[@ardbn="z3Btn_TDS_Next"]/div/img)[position()<3]")));)
3) Jedna z mojich vlastných funkcií
public void waitForPageLoaded() {
ExpectedCondition<Boolean> expectation = new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver driver) { return ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete"); } };
Wait<WebDriver> wait = new WebDriverWait(driver,30); try { wait.until(expectation); } catch(Throwable error) { fail("Timeout waiting for Page Load Request to complete."); } }
odpovede:
2 pre odpoveď č. 1Počkajte, kým sa nezobrazí okno Loading. Predpokladajme, že lokátor / id / xpath poľa Loading je id = loader, Then
By locator = By.id("loader");
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(timeOutInSeconds, TimeUnit.SECONDS)
.pollingEvery(pollingIntervalInSeconds, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class)
.ignoring(StaleElementReferenceException.class);
wait.until(ExpectedConditions.invisibilityOfElementLocated(locator));