@iOSFindBy()无法与wait.until()一起使用

时间:2019-09-25 16:22:48

标签: selenium appium-android appium-ios page-factory

我对pageFactory有问题。找不到解决方案。使用移动应用程序并使用@AndroidFindBy()和@iOSFindBy()。基本上,我有一个具有包含徽标的主页的应用程序。我试图通过测试找到该徽标。在主页之前,有SplashScreen。因此,我必须等待SplashScreen完成,然后出现带有徽标的主页。接下来的问题是:

该元素如下所示:

@AndroidFindBy(id = "logo")
@iOSFindBy(accessibility = "app_logo") //Also tried with id instead of accessibility
private WebElement logoIcon;

public void getLogoIcon() {
    wait.until(ExpectedConditions.visibilityOf(logoIcon));
}

然后,有两种调用元素的方法:

public void checkLogoIcon1(){
   getLogoIcon();
}

public void checkLogoIcon2(){
   logoIcon.isDisplayed();
}

这就是陷阱。在Android上,我必须使用checkLogoIcon1(),因为它必须等待SplashScreen完成才能找到元素。哪个有意义,对不对?它适用于Android。 iOS在那里失败。出于某种原因,iOS将等待SplashScreen完成,它将落在正确的页面上,该元素将位于该页面中,并具有该ID,但失败并显示下一个错误:

  

org.openqa.selenium.TimeoutException:预期条件失败:   等待By.chained({By.AccessibilityId:   app_logo})(以500毫秒的间隔尝试了15秒)

另一方面,当我使用checkLogoIcon2()时,它在Android上失败,这也很有意义。应用程序启动,启动了SplashScreen,它试图找到徽标,它不在那儿,失败了。 但是,这种方法现在同样适用于iOS!它将等待SplashScreen完成,它将降落在HomePage上,将找到具有该ID的元素并通过。为什么? 我是否缺少某些东西,或者PageFactory / Appium / Selenium中存在错误?

希望这不是一个重复的问题。我没有四处搜寻,也没有找到类似的东西。

0 个答案:

没有答案