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

@iOSFindBy is displayed as deprecated, what can I use instead (using pagefactory for Hybrid usage of Android and iOS device))

我没有使用 iOS 的经验,但我正在尝试重新设计我的 Android 项目,以便 iOS 人员也可以将其用于 iOS。

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

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

我可以用什么代替这个?

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

*io.appium.java_client.pagefactory 注释类型 iOSFindBy 已弃用。 UI自动化将被弃用。改用iOSXCUITFindBy 推荐使用XCUITest

@Retention(value=RUNTIME) @Target(value={FIELD,TYPE}) @Repeatable(value=iOSFindBySet.class) public @interface iOSFindBy

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

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

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

此处不允许注释。

提前感谢您的提示

了解事情如何运作的最好方法是检查 appium-java-client 存储库中的相关测试 github:

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

所以在你的情况下,应该是:

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