如何创建在Appium Java的Android和iOS的作品页面对象模型

问题描述 投票:0回答:1

我已创建了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,但我不知道如何解决它。

任何帮助将不胜感激。

谢谢

马特

java selenium appium pageobjects page-factory
1个回答
1
投票

是的,很多你原来的例子对象类型的混合。你是在正确的轨道与@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为生。容易出错,但应该给你的想法。

© www.soinside.com 2019 - 2024. All rights reserved.