Appium 显式等待

Appium Explicit Wait

我一直在我的 Appium 脚本中使用 Thread.sleep,它弄乱了我的脚本 iOS Appium 脚本 Java。

有没有一种方法可以在我的 BaseFile 中实现等待并扩展到所有 类,这样我就不必在脚本的每一行都写明确的等待。我尝试实现 wait.until(ExpectedConditions.elementToBeClickable(By.(". "))); 但它不适用于 AccessibilityId for iOS.

此外,如果我必须使用 xpath,我将不得不在几乎每一行代码中实现它,就像我一直在使用 Thread.sleep 一样,这并不能构成一个干净的代码。

是否有代码块可以添加到我的 BaseFile 并扩展到我的所有测试脚本,而不必在每一行代码中添加等待?

附件是我的脚本的一部分,你会看到它与 Thread.sleep:

有多么混乱
@Test(description =" This test checks if Items are successfully added to Cart")
public void AddItemToCart() throws MalformedURLException, InterruptedException {
    
    service = startServer();

    IOSDriver<IOSElement> driver = DesiredCapabilities();

    OnboardingPage OnboardingPage = new OnboardingPage(driver);

    OnboardingPage.startNow.click();
    Thread.sleep(2000);

    OnboardingPage.allow.click();

    OnboardingPage.zipCodeField.sendKeys("00000");
    Thread.sleep(2000);

    OnboardingPage.confirmZipCod.click();
    Thread.sleep(2000);

    HomePage HomePage = new HomePage(driver);

    HomePage.medicationsCategory.click();
    Thread.sleep(2000);
}

Thread.sleep() 是静态等待,不建议在appium脚本中使用隐式等待,它可以应用于您所在的所有步骤正在定位元素。初始化驱动对象后即可使用

下面是代码语法。

driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

在推荐的 appium 脚本中至少等待 60 秒。

如果喜欢我的回答请点赞并标记为已回答

你可以试试这个:

public IOSElement waitUntilClickable(By by, Integer timeout) {
    return waitUntil(ExpectedConditions.elementToBeClickable(by), timeout);
}

//set your element and timeout you need
    waitUntilClickable(By.xpath("Your element"), 5);