我有一个简单的用例。在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">
尝试自动化这似乎应该是微不足道的,但却给我带来了麻烦。我可以得到&#34;浏览器&#34;和&#34; Chrome&#34;作为离散AndroidElement
s,但我似乎无法实际按下实际选项。
我是否可以实际与这些事物进行互动,或者这是不可能的,因为它是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());
}