元素定位方式Xpath总结

一.绝对路径(不要使用,除非已经使用了所有方式仍然无法定位)
方法:根据实际目录,逐层输写。
例子: find_element_by_xpath("/html/body/div[2]/form/span/input") #div[2]指第2个元素
二.相对路径(建议使用)

方法:首先找目录元素是否有”精准元素“即唯一能标识的属性,找到,则用此属性定位;

1. 通过元素本身的唯一属性定位

   方法:找到目标元素所在的”精准元素“即唯一标识属性,使用此属性定位

  • 1.1 通过id属性定位

      例:find_element_by_xpath("//input[@id='input']")        #@后跟属性,可以是任何属性

  • 1.2 通过name属性定位

      例:find_element_by_xpath("//div[@name='q']")

2. 通过上一级目录的唯一属性定位

    方法:目标元素没有唯一属性,则去找到与目标元素相近的上级目录中”唯一元素“作为起始位置,然后根据此相对位置逐层往子目录编写到目标位置

例:  find_element_by_xpath("//span[@id='input-container']/input") 

        find_element_by_xpath("//div[@id='hd']/form/span/input")

       find_element_by_xpath("//div[@name='q']/form/span/input")

3.  xpath做布尔逻辑运算
例子:find_element_by_xpath("//div[@id='hd' or @name='q']")
4. 双条件同时过滤
      find_element_by_xpath("//div[@id='hd'][@name='q'")

5.目录元素存在层级关系

 

例1: find_element_by_xpath("//ul[@class='app-list']/li[contains(@class,'safe')]/div")

 例2:定位上一层再定位目标元素(定位dl再定位dt)

find_element_by_xpath("//form[@id='J_login_form]/dl/dt/input[@id='J_password']")

 

 

6. 模糊定位

6.1 contains 方法(包含)

find_element_by_xpath("//a[contains(@name,'trnews')]")

6.2 start-with方法(以XX开头)

find_element_by_xpath("//a[start-with(@href,'http')]")

6.3 text方法

find_element_by_xpath("//a[contains(text(),'新闻')]")  查找超链接元素的文本内容

find_element_by_xpath("//*[text()='新闻']")  查找所有内容为退出二字的元素

注意:元素属性值有空格时,尽量不使用带空格,可用contains等其他方法,避开空格

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值