记录一下selenium,appium中xpath根据父子、兄弟、相邻节点定位的方法:
一、定位方式简介:
1.Xpath轴所有的定位方式:
2.常用的定位方式汇总:/child:: (由父节点定位子节点),/parent::(由子节点定位父节点),/preceding-sibling::(由弟弟节点定位哥哥节点),/following::(由哥哥节点定位弟弟节点)
二、定位方式详细实例介绍:
1.由父节点定位子节点/child:: (由父节点定位子节点)
<html>
<body>
<div id="祖父节点">
<!--父节点定位子节点-->
<div id="父节点">
<div>子节点</div>
</div>
</div>
</body>
</html>
各种定位方式:
#问题:根据父节点,找出子节点
#1.串联查找
driver.find_element_by_id('父节点).find_element_by_tag_name('div').text
#2.xpath父子关系寻找
driver.find_element_by_xpath("//div[@id='父节点']/div").text
#3.xpath轴 child
driver.find_element_by_xpath("//div[@id='父节点']/child::div").text
appium实例应用:
2.由子节点定位父节点 /parent::(由子节点定位父节点)
#问题:通过子节点定位父节点内容
<html>
<body>
<div id="祖父节点">
<!--子节点定位父节点-->
<div>
<div>父节点
<div>
<div id="子节点"></div>
</div>
</div>
</div>
</div>
</body>
</html>
各种定位方式:
# 1.xpath定位: `.`代表当前节点; '..'代表父节点
driver.find_element_by_xpath("//div[@id='子节点']/../..").text
# 2.xpath轴 parent
driver.find_element_by_xpath("//div[@id='子节点']/parent::*/parent::div").text
appium实例应用:
3.由弟弟节点定位哥哥节点:/preceding-sibling::(由弟弟节点定位哥哥节点)
#问题:听过弟弟节点定位二哥节点
<html>
<body>
<div>
<!--下面两个节点用于兄弟节点定位-->
<div>大哥节点</div>
<div id="二哥节点"></div>
<div>弟弟节点</div>
</div>
</body>
</html>
定位方式:
# 1.xpath,通过父节点获取其大哥节点
print driver.find_element_by_xpath("//div[@id='二哥节点']/../div[1]").text
# 2.xpath轴 preceding-sibling
print driver.find_element_by_xpath("//div[@id='二哥节点']/preceding-sibling::div[1]").text
4.由哥哥节点定位弟弟节点:/following::(由哥哥节点定位弟弟节点)
#问题:定位弟弟节点
<html>
<body>
<div>
<!--下面两个节点用于兄弟节点定位-->
<div>大哥节点</div>
<div id="二哥节点"></div>
<div>弟弟节点</div>
</div>
</body>
</html>
定位方式:
# 1.xpath,通过父节点获取其弟弟节点
driver.find_element_by_xpath("//div[@id='二哥节点']/../div[3]").text
# 2.Xpath轴 following-sibling
driver.find_element_by_xpath("//div[@id='二哥节点]/following-sibling::div[1]").text
# 3.Xpath轴 following
driver.find_element_by_xpath("//div[@id='二哥节点']/following::*").text
appium实例应用: