Android 移动应用上元素的 Xpath
Xpath for element on Android mobile app
我正在努力编写 Xpath
存在于 Android 移动应用程序中的元素 -
下面是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 "
的元素
我试过的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!!只需使用名称并单击它。像这样:
driver.findElementByName("Buy one Big Mac, get one FREE
").click();
由于该元素具有明确的资源 ID,因此使用它 .. 它更可靠
driver.findElementBy(By.id("com.mcdonalds.app:id/name"))
然后你得到文本并在需要时进行验证。
我评论中的 =
应该是逗号 (,
) 才能使其成为有效的 XPath 表达式,如下所示:
//android.widget.TextView[starts-with(@text, 'Buy one Big Mac, get one FREE')]
或者如果
被您使用的 XPath 处理器认为是白色的 space,那么您可以先使用 normalize-space()
来清理它:
//android.widget.TextView[normalize-space(@text) = 'Buy one Big Mac, get one FREE']
我正在努力编写 Xpath
存在于 Android 移动应用程序中的元素 -
下面是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 "
我试过的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!!只需使用名称并单击它。像这样:
driver.findElementByName("Buy one Big Mac, get one FREE
").click();
由于该元素具有明确的资源 ID,因此使用它 .. 它更可靠
driver.findElementBy(By.id("com.mcdonalds.app:id/name"))
然后你得到文本并在需要时进行验证。
我评论中的 =
应该是逗号 (,
) 才能使其成为有效的 XPath 表达式,如下所示:
//android.widget.TextView[starts-with(@text, 'Buy one Big Mac, get one FREE')]
或者如果
被您使用的 XPath 处理器认为是白色的 space,那么您可以先使用 normalize-space()
来清理它:
//android.widget.TextView[normalize-space(@text) = 'Buy one Big Mac, get one FREE']