java - 在 Appium 中找不到带有 Xpath 的元素
问题描述
我是 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')]
推荐阅读
- django - 使用 UpdateView 不保存数据的自定义表单字段呈现
- coq - What is the difference between Lemma and Theorem in Coq
- python - 调用类方法的字典值
- csv - 以下代码有什么问题?
- asp.net - 无法使用 React Project 部署 Asp.net core 2.0
- c# - 如何修复 json 错误期望'STRING',得到'}'
- python - /snippets/1/ 处的类型错误
- macos - 在插入和搜索正常路径的尝试中,ascii 1-31 值得考虑吗?
- spring-boot - 弹簧MVC;未显示验证表单的错误消息
- react-native - iOS上的React Native相机显示空白屏幕