XPath 语法

转载自: https://www.cnblogs.com/hanmk/p/8997786.html

一、首先需要了解一下xpath的概念和基本语法

菜鸟教程和w3cschool的相关资料:
http://www.runoob.com/xpath/xpath-tutorial.html
http://www.w3school.com.cn/xpath/index.asp

XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。
XPath 语法_第1张图片
XPath 语法_第2张图片
XPath 语法_第3张图片

二、常用的xpath定位方法

1.利用标签内的属性进行定位

  • (1)通过id属性:xpath = “//a[@id=‘start_handle’]”
    //a 表示选取所有a元素,加上[@id=‘start_handle’]:表示选取id属性为’start_handle’的a元素

  • (2)通过name属性定位:xpath = “//input[@name=‘custName’]”
    xpath = “//标签名[@属性=‘属性值’]”
    属性判断条件:最常见为id,name,class等等,属性的类别没有特殊限制,只要能够唯一标识一个元素即可。当某个属性不足以唯一区别某一个元素时,也可以采取多个条件组合的方式,如下:
    xpath= “//input[@type=‘XX’ and @name=‘XX’]”

2.利用text()方法定位

  • xpath = “//a[text()=‘上一步’]”

3.利用contains( )方法定位,也叫模糊定位

  • xpath = “//标签名[contains(@属性, ‘属性值’)]”
  • xpath = “//a[contains(@href, ‘basicinfo’)]”
    取href的关键信息’basicinfo’,这样也可以定位到按钮

4.如果一个元素无法通过自身属性直接定位到,则可以先定位它的父(或父的父,它爷爷)元素,然后再找下一级即可

  • 例如定位百度搜索框,可以按照此种方式试验一下(主要是看一下这个思路)
    百度搜索框对应标签,定位标签的话,可以先定位标签,再定位标签的子元素标签,最后找到标签
    driver.find_element_by_xpath("//form[@id=‘form’]/span[contains(@class,‘s_ipt_wr’)]/input").send_keys(‘python’)
  • 注意:在第二步定位元素时,没有用的id属性,因为在实际中发现通过webdriver打开的浏览器网页中标签没有id属性了(所以选用标签的class属性,并且通过contains()模糊定位),如下:
  • 定位百度一下按钮
    driver.find_element_by_xpath("//form[@id=‘form’]/span[@class=‘bg s_btn_wr’]/input").click()
    或者 “//form[@id=‘form’]//input[@id=‘su’]”

你可能感兴趣的:(XPath 语法)