在 Appium 中找不到带有 Xpath 的元素
Cannot find an element with Xpath in Appium
我是 Appium 新手。对不起,如果问题重复,但我没有找到解决方案。
我有一个问题 - 我无法使用 Xpath 定位元素,但我可以使用 ID 定位器定位它。请参阅所附的屏幕截图。该问题不仅针对此元素重现,而且针对所有元素重现。看来Xpath根本不行
我正在使用 Appium 7.3.0(尝试过不同的版本),通过设置 UIAutomator2
能力 ("automationName", "UiAutomator2")
, Android 8.1 在模拟器上。
我尝试了以下 Xpath 选项:
- 来自AndroidDriver级别:
driver.findElement (By.xpath ("//*[@id='read_indicator']"));
driver.findElement (By.xpath ("//android.widget.ImageView[@id='read_indicator']"));
- 来自消息元素本身:
MobileElement message = driver.findElement (By.id ("body_bubble"));
message.findElement (By.xpath (".//*[@id='read_indicator']"));
message.findElement (By.xpath (".//android.widget.ImageView[@id='read_indicator']"));
- 与上述方法相同,但从 ID 为
footer_delivery_status
且直接包含所需元素的框架布局开始。
但我可以使用 ID 定位器毫无困难地找到该元素:
driver.findElement (By.id ("read_indicator"));
message.findElement (By.id ("read_indicator"));
此外,contains()
、ends-with()
等函数也不起作用。引发以下异常:
org.openqa.selenium.InvalidSelectorException: java.lang.IllegalArgumentException: Unable to compile '//*[contains(@id,'read_indicator')'
此外,我在需要的地方使用了 implicitWait
和 Thread.sleep
,因此元素应该存在。
请告诉我为什么我在使用 Xpath 时遇到这样的问题。
尝试以下方法xpath
:
//*[contains(@resource-id, 'read_indicator')]
或者:
//*[contains(@content-desc, 'Message read')]
我是 Appium 新手。对不起,如果问题重复,但我没有找到解决方案。
我有一个问题 - 我无法使用 Xpath 定位元素,但我可以使用 ID 定位器定位它。请参阅所附的屏幕截图。该问题不仅针对此元素重现,而且针对所有元素重现。看来Xpath根本不行
我正在使用 Appium 7.3.0(尝试过不同的版本),通过设置 UIAutomator2
能力 ("automationName", "UiAutomator2")
, Android 8.1 在模拟器上。
我尝试了以下 Xpath 选项:
- 来自AndroidDriver级别:
driver.findElement (By.xpath ("//*[@id='read_indicator']"));
driver.findElement (By.xpath ("//android.widget.ImageView[@id='read_indicator']"));
- 来自消息元素本身:
MobileElement message = driver.findElement (By.id ("body_bubble"));
message.findElement (By.xpath (".//*[@id='read_indicator']"));
message.findElement (By.xpath (".//android.widget.ImageView[@id='read_indicator']"));
- 与上述方法相同,但从 ID 为
footer_delivery_status
且直接包含所需元素的框架布局开始。
但我可以使用 ID 定位器毫无困难地找到该元素:
driver.findElement (By.id ("read_indicator"));
message.findElement (By.id ("read_indicator"));
此外,contains()
、ends-with()
等函数也不起作用。引发以下异常:
org.openqa.selenium.InvalidSelectorException: java.lang.IllegalArgumentException: Unable to compile '//*[contains(@id,'read_indicator')'
此外,我在需要的地方使用了 implicitWait
和 Thread.sleep
,因此元素应该存在。
请告诉我为什么我在使用 Xpath 时遇到这样的问题。
尝试以下方法xpath
:
//*[contains(@resource-id, 'read_indicator')]
或者:
//*[contains(@content-desc, 'Message read')]