Selenium定位方式之Xpath

mac2025-04-26  17

1、使用Xpath或css定位原因:

id、name、class:依赖于元素这三个对应的属性,如果元素没有以上三种属性,定位不能使用link_text、partial_link_text:只适合超链接tag_name:只能找页面唯一元素,或者页面中多个相同元素中的第一个元素

2、Xpath简介

Xpath即为XML Path的简称,它是一门在XML文档中查找元素信息的语言。HTML可以看做是XML的一种实现,所以Selenium用户可以使用这种强大的语言在Web应用中定位元素,XML是一种标记语言,用于数据的存储与传递。

3、Xpath定位策略的种类

路径路径结合属性路径结合逻辑(多个属性)路径结合层级

4、Xpath定位方法

element=driver.find_element_by_xpath(xpath)

5、Xpath常用的定位策略

(1)路径:

    ①绝对路径:

         语法:以单斜杠开头逐级开始编写,不能跳级。如:/html/body/div/p[1]/input

    ②相对路径:

         语法:以双斜杠开头,双斜杠后边跟元素名称,不知元素名称可以使用*代替。

         如://input或者//*

 (2)路径结合属性

     语法:在Xpath中,所有的属性必须使用@符号修饰,如://*[@id='id值‘]

 (3)路径结合逻辑(多个属性)

     语法:如://*[@id='id值' and @属性名='属性值']

  (4)路径结合层级

     语法:如://*[@id='父级id属性值']/input

提示:

一般情况使用指定标签名称,不使用*代替,因为效率慢无论是绝对路径和相对路径,/后面必须为元素的名称或者*扩展:在工作中,如果能使用相对路径绝对不使用绝对路径

6、Xpath扩展

定位文本值等于xxx的元素,语法://*[text()='xxx'],一般适用于p、a标签定位属性包含xxx的元素,语法://*[contains(@属性,'xxx')]定位属性以xxx开头的元素,语法://*[starts-with(@属性,'xxx')]

7、案例:使用Xpath定位方式,向的找回密码页面中输入手机号、验证码、密码

代码:

from selenium import webdriver from time import sleep #获取浏览器对象 driver=webdriver.Firefox() #获取网络链接 url="https://passport.csdn.net/forget" driver.get(url) #使用绝对路径定位,输入手机号 #driver.find_element_by_xpath("/html/body/div/div/div/div/div/div/div/input").send_keys("17862088888") #使用相对路径结合属性定位,输入手机号 driver.find_element_by_xpath("//input[@id='phone']").send_keys("17862088888") #driver.find_element_by_xpath("//input[@id='password-number']").send_keys("1234556643336") #使用路径结合逻辑定位,输入验证码 driver.find_element_by_xpath("//input[@id='code' and @name='code']").send_keys("3721") #使用属性包含xxx的元素定位 driver.find_element_by_xpath("//input[contains(@placeholder,'密码为11-20位数字字母组合')]").send_keys("1234556643336") #暂停3秒 sleep(3) #退出浏览器驱动 driver.quit()

运行效果:

最新回复(0)