如何点击一个专注于appium的元素。无法在appium中选择下拉列表的值

时间:2017-09-04 12:22:09

标签: java selenium-webdriver appium appium-android

我正面临一个问题,即uiautomatorviewer中没有显示下拉值的元素。

虽然我已经通过屏幕的$ convert -delay 8 -loop 0 plot_* result.gif检查了XML DOM,但是在移动应用屏幕上显示的结果也没有公开值

XML片段如下: -

getPageSource

在第二个想法中,我尝试了键盘操作。我可以使用下面的代码

导航到该值
<android.widget.FrameLayout index="0" text="" class="android.widget.FrameLayout" package="com.demo.pass" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,145][540,196]" resource-id="com.demo.pass:id/frameSearchLocation" instance="6">
    <android.widget.EditText index="0" text="Bryson City" class="android.widget.EditText" package="com.demo.pass" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="true" password="false" selected="false" bounds="[30,145][510,196]" resource-id="com.demo.pass:id/autoCompleteSearchTextView" instance="0" />
    <android.widget.ImageView NAF="true" index="1" text="" class="android.widget.ImageView" package="com.demo.pass" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[457,148][502,193]" resource-id="com.demo.pass:id/imgCurrentLocation" instance="0" />
</android.widget.FrameLayout>

但我无法挖掘价值。我已经尝试了大部分的事情。如: -

ad.pressKeyCode(20);

ad.pressKeyCode(66); // Press Enter 

由于DOM上没有定位符用于下拉值,我无法在上面的代码中传递元素。

由于名称为框架,我还尝试使用以下代码进行切换: -

TouchAction action = new TouchAction(ad);
action.perform();

uiautomatorviewer屏幕: -

enter image description here

请建议在这种情况下我应该做些什么。 任何解决方案/建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

这是一个已知问题。我从过去2年开始做Android App测试自动化。我多次遇到同样的问题。不幸的是,uiAutomator没有检测到这些元素,因此我们无法对这些元素执行任何操作。

Appium在内部向uiAutomator发送命令,uiAutomatar在设备上执行操作。如果uiAutomator看到这些元素,uiAutomator可以执行操作。

因此,我建议您不要花太多时间使用TouchAction / java script / pagesource或xPath,因为我已经尝试过软管解决方案,但没有一个能够正常工作。

但是,如果元素每次出现在同一位置,则可以使用坐标单击元素(如果下拉列表中的元素不断变化,则不建议使用)。

答案 1 :(得分:-1)

以下代码为我工作

search-component

注意: - 您需要根据上述代码中的要求调整X和Y,并传递最近的定位器,如下拉列表的文本框。