java - 如何使用ios应用程序不同元素的属性创建xpath

标签 java selenium xpath appium appium-ios

我有一个移动ios应用程序,它动态生成元素,我在点击一些复选框时遇到了困难,因为它们没有像Web应用程序中常见复选框那样的ID或值,请查看下图。 (抱歉,我无法显示所有图像,但应用程序正在开发中)

enter image description here

Appium 检查器为我提供了 xpath,但我不喜欢它,因为它会根据屏幕上看到的元素而变化,因为我必须向下滚动页面,具体取决于设备,有时会显示一些复选框,有时会显示一些复选框不是,因此 [4] 元素会发生变化。

我想知道是否有一种方法可以通过连接复选框旁边的文本来单击复​​选框,这样无论屏幕上显示多少个复选框,它都会始终通过文本进行检查。

enter image description here

所以最后我有一个像这样的xpath:(//XCUIElementTypeButton[@name="checkbox unselected"])[and text='液压系统已运行']

最佳答案

如果您确定您的结构中每个复选框后面都有一个标签/文本,那么您可以查找该标签,然后查找第一个前面的同级。

//XCUIElementTypeStaticText[@name="The hydraulic system was operational"]/preceding-sibling::XCUIEelementTypeButton[1]

但是,这可能无法看到您的结构。看起来复选框的出现顺序与标签的顺序相同,因此您可以获得相对的 index这些标签,然后按索引获取复选框。像这样的东西:

//label/../checkbox[count(label/preceding-sibling::LabelType)+1]

//XCUIElementTypeStaticText[@name="The hydraulic system was operational"]/../XCUIEelementTypeButton[count(//XCUIElementTypeStaticText[@name="The hydraulic system was operational"]/preceding-sibling::XCUIElementTypeStaticText)+1]

无论如何,这些解决方案都不是最好的。您应该要求开发人员添加适当的属性。

关于java - 如何使用ios应用程序不同元素的属性创建xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57810407/

相关文章:

java - Hadoop:测量每个阶段的持续时间(map、shuffle/sort、reduce)

java - 如何在java中使用selenium构建支持从右到左语言(如阿拉伯语)的自动化测试?任何代码示例

Python/Selenium - 代码中的注释显然在触发 NoSuchElementException 方面有所不同

sql-server - 调整查询以解析 SQL Server 2014 上的 XML 数据

java - 使用 Spring Boot Web 应用程序中嵌入的 Tomcat 配置 lo4j2 日志记录

java - Flink : java. io.NotSerializedException : redis.clients.jedis.JedisCluster

python - 在 Selenium WebDriver 和 Python 中单击 JavaScript 链接

php - 如何通过xpath获取每个节点的属性

java - 修复XPath表达式中的绝对路径,以便它们可在另一个文档的上下文中使用

java - 为什么 Android 中的这个 ServerSocket(通过 USB/ADB 连接到 PC)只接受一次连接?