当页面存在两个文件夹,结构相同,只有文件夹名称不同时,想要点击某一个文件夹上的某个控件。这个时候需要使用xpath定位。
1.由父节点定位子节点
driver.findElementByXPath(//XCUIElementTypeCell/XCUIElementTypeStaticText[@name="标签"])
图中可以看出标签元素的父节点classname为<XCUIElementTypeCell>,标签节点的classname为<XCUIElementTypeStaticText>属性name的值为标签。所以最终的xpath路径为//XCUIElementTypeCell/XCUIElementTypeStaticText[@name="标签"]
这样就可以通过父节点找到子节点,标签文件夹,再使用click(),就可以实现点击进入标签文件夹
2.由兄节点查找弟节点
图可以看到标签文件夹以及呵呵文件夹都是<XCUIElementTypeCell>的子节点。但是标签文件夹位于呵呵文件夹的上方,为呵呵文件夹的兄节点。查找标签文件夹并点击很简单,因为其属性name值唯一。图中三个点代表的就是更多,两个文件夹最右边的三个点是完全一样的,则需要通过兄节点来查找弟节点。
driver.findElementByXPath("//XCUIElementTypeStaticText[@name=\"标签\"]/following-sibling::XCUIElementTypeButton[@name=\"更多\"]")
具体格式为"//兄节点/follwing-sibling::弟节点"
3.由弟节点查找兄节点
driver.findElementByXPath("//XCUIElementTypeButton[@name=\"更多\"]/preceding-sibling:://XCUIElementTypeStaticText[@name=\"标签\"]")
具体格式为
//弟节点/preceding-sibling::/兄节点
本文章只是介绍当界面上存在一些不好定位的元素的xpath定位具体的写法。大部分的元素通过name,id等都可以很简单的定位。