selenium---xpath轴定位

  前面介绍了元素定位通过xpath的方法,安静没有介绍完全,其实通过xpath定位还有一种基本上用不到的方法,这里安静也介绍下,xpath定位之轴定位

轴定位

轴定位其实就是通过html中的一些节点的节点集进行定位的,通常需要用到这些

参考资料:https://www.runoob.com/xpath/xpath-axes.html

轴名称结果
ancestor 选取当前节点的所有先辈(父、祖父等)。
ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。
attribute 选取当前节点的所有属性。
child 选取当前节点的所有子元素。
descendant 选取当前节点的所有后代元素(子、孙等)。
descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following 选取文档中当前节点的结束标签之后的所有节点。
following-sibling 选取当前节点之后的所有兄弟节点
namespace 选取当前节点的所有命名空间节点。
parent 选取当前节点的父节点。
preceding 选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling 选取当前节点之前的所有同级节点。
self 选取当前节点。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 使用方法:

轴名称::标签名

例子1:通过祖宗辈进行定位孙子辈

因为这里我们需要通过祖宗辈来定位,轴节点这里选择 descendant   //*[@id="main"]/descendant::input[@id="zzk_q"] ,这里安静通过ctrl+f来验证下

通过这个我们查看到只有一个元素,说明我们的定位没有问题,如果小伙伴们还不确认,我们可以通过代码进行验证

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath('//*[@id="main"]/descendant::input[@id="zzk_q"]').send_keys('测试-安静')
time.sleep(5)
driver.quit()

例子2:通过节点定位之前节点内容

这里安静还是通过定位找找看来定位

这里通过想要定位元素的兄弟来定位了该元素  //*[@class='search_btn']/preceding::input[@id="zzk_q"] 

同样,我们可以通过代码进行验证,是否定位正确

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath('//*[@class="search_btn"]/preceding::input[@id="zzk_q"]').send_keys('测试-安静')
time.sleep(5)
driver.quit()

 

这里安静简单的通过轴节点定位举了几个例子,具体的实践操作需要小伙伴们私下自己多锻炼,多写,元素定位没有什么方面的地方,只有写的多了,见得多了,自然也就明白了。

 

posted @ 2020-07-30 18:19  测试-安静  阅读(1563)  评论(0编辑  收藏  举报