Я автоматизирую операцию по загрузке денег на Android, используя appium, java, JUnit и проект maven. И чтобы обработать исключение тайм-аута, у меня есть емкость ожидания, подобная этой:
wait = new WebDriverWait(driver, 15);
И я обычно пишу такие строки: wait.until(ExpectedConditions.elementToBeClickable(By.id("login_btn"))).click();
ThisПодход работает просто отлично, за исключением одной строки. Я хочу, чтобы мой код ожидал около 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 секунд специально только для этой строки. Как я могу это сделать? Мне нужно написать новый метод для этого? Если так, то как?