通过从MobileElement扩展来创建自己的定制MobileElement

时间:2018-11-09 08:32:51

标签: java appium pageobjects page-factory

我试图拥有自己的自定义MobileElement类,可以添加更多方法。 例如,我有一个名为SamplePage的类,它包含以下移动元素:

  @iOSFindBy(accessibility = "Settings")
  @AndroidFindBy(id = "Settings")
  public MobileElement SettingsButton;

我在测试用例中使用它,如下所述:

  samplePage.SettingsButton.click();

我想拥有的东西如下

   @iOSFindBy(accessibility = "Settings")
   @AndroidFindBy(id = "Settings")
   public customisedMobileElement SettingsButton;

我在customizedMobileElement类中具有IsVisible()方法或CopyText()方法的测试用例:

   Assert.isTrue(samplePage.SettingsButton.IsVisible(), "not visible");
   samplePage.LoginTextInput.CopyText();

请您分享您的想法吗?

1 个答案:

答案 0 :(得分:0)

首先定义页面,如下所示:

public class SettingPage{       

    @AndroidFindBy(accessibility = "Settings")
    @iOSFindBy(accessibility = "Settings")
    private MobileElement setting;

    public SettingPage(AppiumDriver<MobileElement> driver) {
        PageFactory.initElements(new AppiumFieldDecorator(driver), this);
    }

    public boolean isScreenDisplayed(){
        try {
            return setting.isDisplayed();
        }catch (Exception e){
            return false;
        }
    }

    public void click(){
         setting.click();
    }
}

然后您可以按以下方式使用它:

public class Test(){
  AppiumDriver<MobileElement> driver;

  //define your desiredCapabilities and appium driver

  private SettingPage settingPage;

  public void displayTest(
   settingPage= new SettingPage(driver);
   settingPage.isScreenDisplayed();
  }

  public void clickTest(
   settingPage= new SettingPage(driver);
   settingPage.click();
  }

}