如何更改AndroidFindBy注解中的包名
How to change the package name in AndroidFindBy annotation
问题 :我想 运行 一个 Appium 脚本在同一个应用程序上,但构建不同。
应用中所有resource-Id都附加包名
例如:对于构建 A ,用户名文本字段是 - alpha.beta.charlie.delta:id/user_name
和
对于构建 B 用户名字段 alpha.beta.charlie/user_name
,增量从包名称中删除。
我使用页面工厂的 AndroidFindBy 来定位元素
private static final PACKAGE = "alpha.beta.charlie.delta"
@AndroidFindBy(id = PACKAGE + "/user_name")
private MobileElement username;
其中 PACKAGE 被声明为常量。
现在,如果我想 运行 构建 B 上的脚本,我必须在每次触发执行之前更改包名称。这效率不高。
我知道我们不能给 pagefactory 注释添加变量。
我看到的唯一解决方法是使用 https://developer.android.com/reference/android/support/test/uiautomator/UiSelector.html#resourceidmatches
是否有任何其他解决方法,我可以在编译时添加包名称以绕过手动更改包名称。
你不需要包名,因为 Appium
可以在 resource id
中找到没有包名的元素,所以你可以在 ":id/" 之后使用 value
。当我为 QA
build 和 Prod
build 更改包名称时,我遇到了这个问题。所以试试下面的代码:
@AndroidFindBy(id = "user_name")
private MobileElement username;
现在它独立于包名称,如果 id
在所有构建中都是 user_name
,则在任何构建中都可以是 运行。
问题 :我想 运行 一个 Appium 脚本在同一个应用程序上,但构建不同。
应用中所有resource-Id都附加包名
例如:对于构建 A ,用户名文本字段是 - alpha.beta.charlie.delta:id/user_name
和
对于构建 B 用户名字段 alpha.beta.charlie/user_name
,增量从包名称中删除。
我使用页面工厂的 AndroidFindBy 来定位元素
private static final PACKAGE = "alpha.beta.charlie.delta"
@AndroidFindBy(id = PACKAGE + "/user_name")
private MobileElement username;
其中 PACKAGE 被声明为常量。
现在,如果我想 运行 构建 B 上的脚本,我必须在每次触发执行之前更改包名称。这效率不高。
我知道我们不能给 pagefactory 注释添加变量。
我看到的唯一解决方法是使用 https://developer.android.com/reference/android/support/test/uiautomator/UiSelector.html#resourceidmatches
是否有任何其他解决方法,我可以在编译时添加包名称以绕过手动更改包名称。
你不需要包名,因为 Appium
可以在 resource id
中找到没有包名的元素,所以你可以在 ":id/" 之后使用 value
。当我为 QA
build 和 Prod
build 更改包名称时,我遇到了这个问题。所以试试下面的代码:
@AndroidFindBy(id = "user_name")
private MobileElement username;
现在它独立于包名称,如果 id
在所有构建中都是 user_name
,则在任何构建中都可以是 运行。