【发布时间】:2020-02-19 16:17:51
【问题描述】:
我正在使用 appium、java、JUnit 和 maven 项目在 android 上自动执行加载资金操作。为了处理超时异常,我有这样的等待能力:
wait = new WebDriverWait(driver, 15);
我通常会这样写:
wait.until(ExpectedConditions.elementToBeClickable(By.id("login_btn"))).click();
这种方法工作得很好,除了一行。我希望我的代码为特定行等待大约 60 秒。因为加载该页面大约需要 60 秒。
public void loadMoney() {
successfulLogIn();
wait.until(ExpectedConditions.elementToBeClickable(By.id("loadBtn"))).click();
wait.until(ExpectedConditions.elementToBeClickable(By.id("currencyEur"))).click();
wait.until(ExpectedConditions.elementToBeClickable(By.id("activityLoadMoney_textView_cardLastFourDigit"))).click();
wait.until(ExpectedConditions.elementToBeClickable(By.id("rowYourCards_card_container"))).click();
wait.until(ExpectedConditions.elementToBeClickable(By.id("moneyInputLayout_editText_mainCurrencyAmount"))).sendKeys(loadMoneyAmount);
wait.until(ExpectedConditions.elementToBeClickable(By.id("activityLoadMoney_textView_loadMoney"))).click();
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("successtext")));
MobileElement result = driver.findElement(By.id("successtext"));
Assert.assertEquals((result.getText()), "Successfully sent!");
}
在上面的代码中,我希望我的代码为此行等待大约 60 秒
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("successtext")));
因为显示此文本大约需要 60 秒。正如我上面提到的,我的等待时间设置为 15 秒。因此我得到 TimeoutException .. 我不想将整个等待时间更改为 60 秒,因为其他方法会花费太多时间。我只希望我的代码专门为此行等待 60 秒。我怎样才能做到这一点?我需要为此编写一个新方法吗?如果有怎么办?
【问题讨论】:
标签: java mobile automation appium wait