【问题标题】:Running appium test for android with multiple appPackage using @AndroidFindBy使用 @AndroidFindBy 为具有多个 appPackage 的 android 运行 appium 测试
【发布时间】:2015-12-30 20:00:26
【问题描述】:

我正在将我的 android apk 的 appPackage 从 com.mycurrentpackage 更改为 com.myfuturepackage。

我将所有元素的 id 定义为

com.mycurrentpackage:id/elementID

目前我发现元素为

@AndroidFindBy(id = "com.mycurrentpackage:id/startup_text1")

@CacheLookup

私有 MobileElement startup_text1;

我希望能够动态更改它。所以我定义了一个静态变量appPackage。

这里是构造函数的部分

...

appPackage = driver.getCapabilities().getCapability("appPackage").toString();

PageFactory.initElements(new AppiumFieldDecorator(this.driver, 30, TimeUnit.SECONDS), this);

...

正如你所见,appPackage 在初始化元素之前已经定义好了。

但是当我这样做时

@AndroidFindBy(id = appPackage+":id/startup_text1")

@CacheLookup

私有 MobileElement startup_text1;

编译时说

错误:(42, 35) java: 属性值必须是常量

还有其他方法吗?

【问题讨论】:

    标签: java android selenium-webdriver appium


    【解决方案1】:

    您将包名称作为变量的想法是正确的,但它必须是最终的:

    public static final String appPackage = "com.mycurrentpackage";
    

    现在你可以使用了:

    @AndroidFindBy(id = appPackage+":id/startup_text1")
    

    【讨论】:

      【解决方案2】:

      我也可以使用

      @AndroidFindBys({
      @AndroidFindBy(id = "com.mycurrentpackage:id/startup_text1"),
      @AndroidFindBy(id = "com.futurepackage:id/startup_text1")
      })
      @CacheLookup
      private MobileElement startup_text1
      

      当我使用这个时,加载页面需要很长时间。

      我需要将其列为

      private List<MobileElement> startup_text1
      

      【讨论】:

        猜你喜欢
        • 2019-03-28
        • 2017-11-07
        • 1970-01-01
        • 2020-11-06
        • 2016-10-21
        • 1970-01-01
        • 2018-06-05
        • 2015-03-05
        • 1970-01-01
        相关资源
        最近更新 更多