为代码中的特定行设置不同的等待时间

问题描述 投票:0回答:1

我使用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
1个回答
0
投票

您可以喜欢

WebDriverWait wait = new WebDriverWait(driver,10);
wait.until(ExpectedConditions.elementToBeClickable(By.id("activityLoadMoney_textView_loadMoney"))).click();

wait.wait(60);
 //OR
wait.pollingEvery(Duration.ofSeconds(60));

wait.until(ExpectedConditions.presenceOfElementLocated(By.id("successtext")))

通过这种方式,您不创建WebDriverWait的另一个对象

© www.soinside.com 2019 - 2024. All rights reserved.