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);
我一直在我的 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);