@iOSFindBy显示为已弃用,我可以改用什么(使用pagefactory混合使用Android和iOS设备)

时间:2019-05-30 08:55:12

标签: appium appium-ios appium-android appium-snackbar

我没有使用iOS的经验,但是我正在尝试为iOS家伙重新设计我的Android项目,以将其也用于iOS。

在互联网上搜索后,我发现可以通过使用页面工厂并通过@iOSFindBy定位元素来实现, 尝试通过页面工厂方法使用@iOSFindby定位元素后,编译器指示已弃用该元素。

@iOSFindBy (Accessibility = "button_login")    
@AndroidFindBy(id = "net.myApp.int:id/loginBtn")    
private MobileElement login_Button2; 

enter image description here

我可以代替它使用什么?

我也在Appium Java客户端(https://static.javadoc.io/io.appium/java-client/7.0.0/index.html?deprecated-list.html)中看到过:

* io.appium.java_client.pagefactory 注释类型iOSFindBy 不推荐使用。 UIAutomation将不推荐使用。请改用iOSXCUITFindBy,建议使用XCUITest

  

@保留(值=运行时间)@目标(值= {FIELD,TYPE})   @Repeatable(value = iOSFindBySet.class)public @interface iOSFindBy

用于标记页面对象上的字段,以指示用于定位元素或元素列表的替代机制。与PageFactory结合使用,可以使用户快速轻松地创建PageObjects。使用iOS UI选择器,可访问性,ID,名称,类名称,标记和xpath *

但我不知道这是否是解决方案以及如何使用 如果我在代码中使用它,也会出现错误:

@iOSXCUITFindBy Accessibility = "button_login"
@AndroidFindBy(id = "net.myApp.int:id/loginBtn")
private MobileElement login_Button1;

此处不允许使用注释。

感谢任何提前提示

1 个答案:

答案 0 :(得分:1)

了解工作原理的最好方法是在github上的 appium-java-client 存储库中检查相关测试:

    @iOSXCUITFindBy(accessibility = "IntegerB")
    private MobileElement textField2;

因此,您的情况应该是:

    @iOSXCUITFindBy(accessibility = "button_login")
    @AndroidFindBy(id = "net.myApp.int:id/loginBtn")
    private MobileElement login_Button1;