我已创建了Appium和目前正在为Android应用硒在Java中的页面对象如下图所示:
public class MattVerifyPage extends PageObject{
private AppiumDriver driver = FrameworkInitialize.driver;
By verifyTitle = By.xpath("/hierarchy/android.widget.TextView");
public void verifyTitle(String expectedTitle){
String actualTitle = driver.findElement(verifyTitle).getText();
不过,我需要它的工作的Android应用和iOS应用中,XPath的选择是两种不同的应用程序。我想,我需要做的是这样的:
@AndroidFindBy(xpath = “androidxpath”)
@iOSFindBy(xpath = “iOSxpath”)
public MobileElement verifyTitle ;
无论我是否使用Android或iOS我还是只想用所谓的“verifyTitle”的一个变量这意味着什么。
然而,当我做到这一点,driver.findElement线(字符串actualTitle = driver.findElement(verifyTitle).getText()表示如下错误:
findElement
(org.openqa.selenium.By)
in DefaultGenericMobileDriver cannot be applied
to
(io.appium.java_client.MobileElement)
我想我有SeleniumElements比较AppiumElements,但我不知道如何解决它。
任何帮助将不胜感激。
谢谢
马特
是的,很多你原来的例子对象类型的混合。你是在正确的轨道与@OSFindBy注解。一旦你定义的那些你已经拥有的元素,以便无需再次找到它。以下是所有你需要:
verifyTitle.getText()
看到这个博客帖子上Page Object Model(POM)的更多信息。
摘要:
import all the good stuff including PageFactory;
public class YourPage {
private WebDriver driver;
public YourPage(AppiumDriver<MobileElement> driver) {
this.driver = driver;
PageFactory.initElements(new AppiumFieldDecorator(driver), this);
}
@AndroidFindBy(id = "android_button")
@iOSFindBy(id = "ios_button")
private MobileElement that_button;
public void pushTheButton() {
that_button.click()
}
}
注:上面的代码是未经测试/注销我的头顶/我不写的Java为生。容易出错,但应该给你的想法。