java 苹果:当使用xpath总是返回NoSuchElementException时,如何找到没有id、name或类名的元素?

nlejzf6q  于 2023-08-01  发布在  Java
关注(0)|答案(1)|浏览(83)

我正在尝试使用appium来自动化一个应用程序,但有一些问题。许多标签没有ID。在我目前的情况下,我想单击的元素有一个具有id的父元素。但是,父元素包含的内容比我想单击的内容要多得多,因此仅单击父元素可能不起作用。我想单击该父元素的第一个子元素,但该子元素没有ID。第一个孩子、第一个孩子的孩子(父母的孙子)、孙子的孩子(也叫曾孙)以及曾孙的三个孩子都没有身份证。孙节点和最后3个子节点都有resource-id,但是appium(在Java中)没有driver.findElementByResourceId()方法。这些元素都没有名称或content-desc或可访问性ID或任何东西。当我尝试使用driving.getElementByTagName()时,我得到一个错误,指出标记名选择器不支持此会话。出于某种原因使用xpath总是返回NoSuchElementException。
显然class属性与class name不一样,所以每当我尝试driver.findElements(By.className()).get(0)时,我总是得到一个IndexOutOfBoundsException,因为返回列表的大小显然是0(元素具有class属性,但没有class name属性)。我只是不知道该怎么办。
以下是一些相关信息:我正在使用UiAutomator 2和Android 12。
在Java中,我使用的是appium版本7.0.0和selenium版本3.141.59。
有谁知道我可以在这里使用什么样的选择器?
以下是我所谈论的内容的图片(尽管我已经审查了资源id):x1c 0d1x的数据
突出显示的元素是具有id的父元素,但包含的内容太多。这张图片中的其余元素足以让我点击,但它们没有id,名称,文本,链接文本,content-desc或accessibilty id。

yqkkidmi

yqkkidmi1#

您总是可以像下面这样使用resource-id构造xpath

.//android.widget.textView[@resource-id = 'login']

字符串
并且如上所述将如移动的应用自动化所期望的那样工作。
此外,您还可以使用Appium Inspector Tool在UI上使用上述xpath进行搜索。

相关问题