我试图使用FluentWait而不是睡觉,这是我的第一次练习。首先,最重要的是,我是否正确行事?其次,我通过两个元素,所以我觉得它有点工作(PaymentMethod按钮和CheckOut按钮)。在我实施FluentWait之前,它无法找到它们。最后它找不到第三个(backToDesktop按钮)元素。虽然我添加了wait.ignore(ElementNotVisibleExcecption.class),但保持抛出元素不可见。
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");
答案 0 :(得分:0)
Intent intent = new Intent(MapsActivity.this, RestaurantDetailsActivity.class);
是自定义等待。在大多数情况下你不应该需要它。您应该始终使用FluentWait
和WebDriverWait
,如果这不起作用,则可以调查ExpectedConditions
。我的猜测是,像下面这样简单的东西对你有用。这只是一个例子。您应该查看ExpectedConditions
提供的所有可以等待的条件。可能最常见的是等待元素可见或可点击。
FluentWait