Python find_element_by_xpath 通过 文本内容 定位
查找具体的元素,必须在前面输入标准开头 “ // ”,表示从当前节点寻找所有的后代元素
1、通过文本内容定位
# HTML
<div>
<span>11111</span>
<span>22222</span>
<span>33333</span>
</div>
# 通过文本内容定位 22222 的 span 标签
find_element_by_xpath("//span[contains(text(),'22222')]")
2、选择第 几个 节点
# 先通过文本定位22222所在span标签
# 再通过 position 定位 33333的 span标签
find_element_by_xpath("//span[contains(text(),'22222')]/../span[position()=3]")
find_element_by_xpath("//span[contains(text(),'22222')]/../span[3]")
3、定位上一层节点或上二层节点
# 通过 /.. 定位到 上一点节
find_element_by_xpath('//div[contains(text(),"红宝石")]/..')
# 通过 /../.. 定位到 上上一点节
find_element_by_xpath('//div[contains(text(),"红宝石")]/../..')
3、根据 属性 定位
find_element_by_xpath("//div[@id='goods']")
find_element_by_xpath("//div[@class='goods']")
4、可以通过赋值变量多次定位,实现目标
#把节点保存到变量 content
content=driver.find_element_by_xpath('//div[contains(text(),"红宝石")]/../..')
#通过 content 变量继续定位,此处注意要在 "/" 前台加 "." 指明当前节点位子开始定位
text=content.find_element_by_xpath("./td[7]/div/button")
5、选择同级节点
<div class="el-form-item>
<label for="transDate">...</label>
<div>...</div>
<div>...</div>
<div>...</div>
</div>
# 选择 label 节点之后的同级 div 节点
find_element_by_xpath("//label[@for='transDate']/following-sibling::div")
# 更多用法
preceding-sibling:: # 当前节点之前的同级节点
following-sibling:: # 当前节点之后的同级节点
following-sibling::div[2] #当前之点之后的同级 第2个节点