我有一个简单的用例。在 android 应用程序中,按一个按钮,浏览器应用程序将打开一个 URL。
将出现“打开方式”对话框,允许您选择浏览器或 Chrome。
在 appium 检查器中看起来像这样:
<android.widget.ListView resource-id="android:id/resolver_list">
<android.widget.LinearLayout>
<android.widget.ImageView resource-id="android:id/icon">
<android.widget.LinearLayout>
<android.widget.TextView resource-id="android:id/text1">
<android.widget.LinearLayout>
<android.widget.ImageView resource-id="android:id/icon">
<android.widget.LinearLayout>
<android.widget.TextView resource-id="android:id/text1">
尝试自动化这似乎应该是微不足道的,但却给我带来了麻烦。我可以将“Browser”和“Chrome”的文本作为离散AndroidElement
的,但我似乎无法实际按下实际选项。
我是否可以实际与这些东西进行交互,或者这是不可能的,因为它是 android 系统本身的一部分?
为了帮助解决这个问题,这里是我的页面对象的设置。
@AndroidFindBy(id = "android:id/resolver_list")
private AndroidElement listParentElement;
public List<OpenWithOption> getOptions() {
/* ... */
List<MobileElement> elements = listParentElement
.findElementsById(SYS_ID_PREFIX + "text1"); // Here's where I can only get the text element itself but can't figure out how to get the elements above that.
return elements.stream()
.map(mobileElement -> new OpenWithOptionImpl(mobileElement.getText(), mobileElement))
.collect(toList());
}