我想使用FluentWait而不是睡眠,這是我的第一次練習。首先,最重要的是我做對了嗎?其次我通過了兩個元素,所以我認爲它有點作品(PaymentMethod按鈕和CheckOut按鈕)。在我實現FluentWait之前,它不會找到它們。最後它不會找到第三個(backToDesktop按鈕)元素。雖然我添加了wait.ignore(ElementNotVisibleExcecption.class),但仍然拋出Element不可見。硒FluentWait和元素不可見異常
FluentWait<WebDriver> wait = new FluentWait<WebDriver>(login.getDriver());
wait.withTimeout(5, TimeUnit.SECONDS);
wait.pollingEvery(250, TimeUnit.MILLISECONDS);
wait.ignoring(NoSuchElementException.class);
wait.ignoring(ElementNotVisibleException.class);
WebElement paymentMethod = wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return login.getDriver().findElement(By.xpath("//*[@id='paymentMethodHolder']/div[1]/div[1]/button"));
}
});
paymentMethod.click();
System.out.println("FOUND PAYMENTMETHOD BUTTON");
WebElement checkOut = wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return login.getDriver().findElement(By.xpath("//*[@id='checout-footer-buttons']/button[2]"));
}
});
checkOut .click();
System.out.println("FOUND KINNITA BUTTON");
WebElement backToDesktop= wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return login.getDriver().findElement(By.className("modal-button-text"));
}
});
backToDesktop.click();
System.out.println("FOUND BACKTODESKTOP BUTTON");
該元素是否在UI上可見? – xyz
@xyz關閉它到達該部分的時刻,但是,它應該是可見的。幾乎沒有。這是我所做的,它似乎工作:wait.ignoring(NoSuchElementException.class,ElementNotVisibleException.class); \t \t wait.ignoring(WebDriverException.class);這是否意味着我正在以正確的方式來做,還是隻是幸運的巧合?謝謝! –
我認爲這種方法可能根本不起作用。因爲現在我得到元素不可見異常,雖然我有wait.ignoring(ElementNotVisibleException.class)。 –