Selenium定位方式之Xpath

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扩展

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

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

代码:

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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值