我对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中存在错误?
希望这不是一个重复的问题。我没有四处搜寻,也没有找到类似的东西。