博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium 详解xpath定位
阅读量:6589 次
发布时间:2019-06-24

本文共 3078 字,大约阅读时间需要 10 分钟。

xpath定位在业界被戏称为元素定位的"屠龙宝刀",宝刀在手,武林我有。现在我们就来详解xpath定位方法。

一、xpath通过元素属性定位


xpath可以通过元素的属性来定位,如id,name,class,type等属性,元素的任意属性值都可以通过xpath来定位,只要这个属性值能唯一的标识一个元素

我们还以百度首页的搜索框为例,用xpath通过不同属性来定位它。

代码:

# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 用xpath通过id属性来定位搜索框# driver.find_element_by_xpath("//*[@id='kw']").send_keys('selenium')# 用xpath通过name属性来定位搜索框# #driver.find_element_by_xpath("//*[@name='wd']").send_keys('selenium')# 用xpath通过class属性来定位搜索框# driver.find_element_by_xpath("//*[@class='s_ipt']").send_keys('selenium')# 用xpath通过maxlength属性来定位搜索框# driver.find_element_by_xpath("//*[@maxlength='255']").send_keys('selenium')# 用xpath通过autocomplete属性来定位搜索框driver.find_element_by_xpath("//*[@autocomplete='off']").send_keys('selenium')# 等待5秒sleep(5)# 退出driver.quit()

二、xpath通过限定元素标签定位


 

  • * 表示从当前页面所有的标签(tag)中来寻找元素
  • 有时候一个元素的属性值与其他元素是相同的,我们可以通过限定标签(tag)来定位

代码:

# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 用xpath限定标签名为input并通过id属性来定位搜索框driver.find_element_by_xpath("//input[@id='kw']").send_keys('selenium')# 等待5秒sleep(5)# 退出driver.quit()

三、层级与属性结合定位


 

如果一个元素本身没有可利用的属性来定位,那么我们可以先找到它的上一级(父元素),再通过上一级来找到它。以此类推,如果它的上一级也没有可以定位的属性值,那么再找上上一级,直到找到可以定位到的那一级元素

代码:

# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 用xpath通过上上一级来定位搜索框driver.find_element_by_xpath("//*[@id='form']/span/input").send_keys('selenium')# 等待5秒sleep(5)# 退出driver.quit()

四、标签索引定位


 

有时候,同一层级下有多个相同标签的元素,那么我们就只能通过标签索引来精确定位到元素了

比如我们要定位百度首页“百度一下”按钮,它的父级元素是标签<form>下的第二个<span>。这里要注意一下,这里的索引(从1开始)与python序列中的索引(从0开始)不同

代码:

# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')driver.find_element_by_id('kw').send_keys('selenium')# 用xpath通过标签索引定位"百度一下"按钮driver.find_element_by_xpath("//*[@id='form']/span[2]/input").click()# 等待5秒sleep(5)# 退出driver.quit()

五、逻辑运算


 

如果一个属性不能唯一地区分一个元素,需要两个或者两个以上的属性才能定位到元素,那么我们可以用逻辑运算符来连接两个或多个属性来定位元素,支持与(and),或(or),非(not)

代码:

# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 用xpath通过通过逻辑运算and来定位搜索框driver.find_element_by_xpath("//*[@id='kw' and @name='wd']").send_keys('selenium')# 等待5秒sleep(5)# 退出driver.quit()

 

转载于:https://www.cnblogs.com/eastonliu/p/9090581.html

你可能感兴趣的文章
java的左移位(<<)和右移位(>>)和无符号右移(>>>)
查看>>
在网页浏览器中原生显示PDF文件
查看>>
升级后开机就提示“android.process.acore”停止执行 --分析 解决方式
查看>>
HTML5 CSS3专题 诱人的实例 CSS3打造百度贴吧的3D翻牌效果
查看>>
OC-内存管理的一些要点
查看>>
Recurrent Neural Network(3):LSTM Basics and 《Inside Out》
查看>>
Linux基础知识-文件管理
查看>>
西窗的雨
查看>>
ubuntu:nodejs安装
查看>>
11月8日PHP练习《留言板》
查看>>
JavaScript学习笔记 1
查看>>
问题007:JDK版本与JRE版本不同导致java.exe执行类文件错误 java.lang.UnsupportedClassVersionError错误...
查看>>
shiro框架 4种授权方式 说明
查看>>
ext2文件系统 - mke2fs
查看>>
Linux Futex的设计与实现(转)
查看>>
Unix环境高级编程(二)文件和目录
查看>>
信号的捕捉与sigaction函数
查看>>
使用Google-Colab训练PyTorch神经网络
查看>>
派 二分水题
查看>>
傅里叶变换
查看>>