首页 > 解决方案 > @iOSFindBy 显示为已弃用,我可以改用什么(使用 pagefactory 混合使用 Android 和 iOS 设备))

问题描述

我没有使用 iOS 的经验,但我正在尝试为 iOS Guys 重新设计我的 Android 项目,以便将它也用于 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 已弃用。UIAutomation 将被弃用。改用 iOSXCUITFindBy 推荐使用 XCUITest

@Retention(value=RUNTIME) @Target(value={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;

这里不允许注释。

提前感谢任何提示

标签: appiumappium-iosappium-androidappium-snackbar

解决方案


了解事情如何工作的最好方法是检查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;

推荐阅读