我有一个移动ios应用程序,它动态生成元素,我在点击一些复选框时遇到了困难,因为它们没有像Web应用程序中常见复选框那样的ID或值,请查看下图。 (抱歉,我无法显示所有图像,但应用程序正在开发中)
Appium 检查器为我提供了 xpath,但我不喜欢它,因为它会根据屏幕上看到的元素而变化,因为我必须向下滚动页面,具体取决于设备,有时会显示一些复选框,有时会显示一些复选框不是,因此 [4] 元素会发生变化。
我想知道是否有一种方法可以通过连接复选框旁边的文本来单击复选框,这样无论屏幕上显示多少个复选框,它都会始终通过文本进行检查。
所以最后我有一个像这样的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/