原因是你的 xpath 字符串很长。这往往会减慢 Appium 的速度,因为它需要遍历您的案例中的长路径。放置绝对 xpath 也是非常脆弱和糟糕的主意。
有几种获取元素的方法
类名
身份证
名称
xpath
可访问性 ID
ios 谓词字符串
ios类链
请参阅元素的检查器(例如 Appium 检查器)。
如果有可访问的 id ,代码应该是
WebElement el = driver.findElement(MobileBy.AccessibilityID("foo"));
班级名称
类名应该是第二个。这特别有效,特别是如果只有 1 个唯一的类名 - 比如表单中只有 1 个按钮
List<MobileElement> elementsTwo = (List<MobileElement>) driver.findElementsByClassName("XCUIElementTypeButton");
iOS 特定的定位器策略
你可以试试 iOSClassChain。那是下一个有效的选择器。示例
String selector = "**/XCUIElementTypeCell[`name BEGINSWITH "C"`]/XCUIElementTypeButton[10]";<br>
driver.findElement(MobileBy.iOSClassChain(selector));
或者您可以尝试使用谓词选择器。
driver.findElementsByIosNsPredicate("isWDVisible == 1");
最后,如果所有这些选项都用完了,你应该使用 xpath 作为最后的手段。避免使用绝对 xpath 并使用相对 xpath。
绝对 xpath
String El1="//XCUIElementTypeApplication[@name='appName']/XCUIElementTypeWindow[1]/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeTable/XCUIElementTypeCell[5]/XCUIElementTypeStaticText";
相对 xpath
String El1 = “//XCUIElementTypeTable[name=‘Customer’]/XCUIElementTypeCell[5]/XCUIElementTypeStaticText”