【发布时间】:2016-02-27 08:43:49
【问题描述】:
我正在努力编写 Android 移动应用程序中存在的元素的 Xpath -
下面是xml:
<node index="5" text="" resource-id="com.mcdonalds.app:id/grid_item" class="android.widget.RelativeLayout" package="com.mcdonalds.app" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[366,601][714,949]">
<node index="0" text="Buy one Big Mac, get one FREE " resource-id="com.mcdonalds.app:id/name" class="android.widget.TextView" package="com.mcdonalds.app" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[378,841][702,907]" />
<node index="1" text="Expires 12/31/15" resource-id="com.mcdonalds.app:id/expiration" class="android.widget.TextView" package="com.mcdonalds.app" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[378,907][702,937]" />
</node>
我正在尝试单击具有属性 text="Buy one Big Mac, get one FREE&#13;" 的元素
我尝试过的 xpath 是 -
driver.findElementByXPath("//android.widget.TextView[@text='Buy one Big Mac, get one FREE ']").click();
与
driver.findElementByXPath("//android.widget.TextView[@text=\"Buy one Big Mac, get one FREE \"]").click();
这两种方法都不起作用。有没有人遇到过类似的问题?
元素没有其他独特的属性。
【问题讨论】:
-
-
我怀疑编码在这里造成了麻烦。您可以尝试使用 XPath
starts-with(),如果它在 appium 中受支持://android.widget.TextView[starts-with(@text='Buy one Big Mac, get one FREE')] -
谢谢哥们。我试过但我收到错误,因为 org.apache.xpath.functions.FuncStartsWith 只允许 2 个参数:(
-
啊,错误消息表明 XPath 处理器支持
starts-with()函数,只有传递的 args 数量是错误的(实际上我给出了一个错误的示例,请查看我的答案以获取可能的解决方案)
标签: android xml xpath webdriver appium