Selenium成长之路-11简单对象定位之XPATH方法

简介: Selenium成长之路-11简单对象定位之XPATH方法

XPath是一种在HTML文档中定位元素的语言。因为 HTML 可以看做 XML 的一种实现,所以 selenium 用 户可是使用这种强大语言在 web 应用中定位元素。


XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力,XPath 很快的被开发者采用来当作小型查询语言。


XPath的使用,需要在Firefox浏览器先安装FireBug插件,建议使用Firefox浏览器(建议版本:57以前版本),因为57以后的版本,不支持FireBug插件了,也可能是新版本我个人使用的不太习惯。


安装完FireBug插件后,我们就在百度首页使用xpath进行元素定位


image.png


我们定位的是"百度一下"搜索按钮,在FirePath中可以看到,xpath的写法是://*[@id='su']  


如果我们定位的元素很长,怎么办呢?


如下图,我们要定位百度新闻页面的一段标题:


image.png

这样xpath路径直接写成:driver.find_element(By.XPATH,"//*[@id='pane-news']/div/ul/li[5]/strong/a")  是没有问题的


但是,在实际测试过程中,我们并不喜欢用这么长的路径来定位,这个时候,我们就可以使用contains()或者text()方法来定位;


contains()方法:driver.find_element(By.XPATH,"//*/a[contains(@href,'china.chinadaily')]")


text()方法:driver.find_element(By.XPATH,"//*[@class = 'lavalamp-item']/a[text()= '体育']")


这样就很简单了。


附上一段代码:


# coding = utf-8
from selenium import  webdriver
import time
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
url = 'http://news.baidu.com'
driver.get(url)
# 增加一个判断
try:
    #直接从firebug复制出来的路径
    # driver.find_element(By.XPATH,"//*[@id='pane-news']/div/ul/li[5]/strong/a")
    #使用contains()方法定位
    # driver.find_element(By.XPATH,"//*/a[contains(@href,'china.chinadaily')]")
    #使用text()方法定位
    driver.find_element(By.XPATH,"//*[@class='lavalamp-item']/a[text()='体育']")
    print("test pass")
except Exception as e:
    print("test failed",format(e))
time.sleep(5)
driver.quit()


总结一下Xpath的定位方法:


1.绝对路径定位:find_element_by_xpath("/html/body/div[2]/form/span/input")


2.相对路径定位:find_element_by_xpath("//input[@id=’input’]") #通过自身的 id 属性定位


3.布尔逻辑运算://div[@id='hd' or @name='q']


4.模糊定位(contains)://*/a[contains(@href,'china.chinadaily')]


5.再就是非常方便的,直接使用firebug,定位路径直接copy出来就可以了


xpath在实际的测试过程中运用很广泛,所以学习selenium的小伙伴,有必要掌握xpath的元素定位方法哦~~

目录
相关文章
|
4月前
|
数据采集 Web App开发 JavaScript
利用Selenium和XPath抓取JavaScript动态加载内容的实践案例
利用Selenium和XPath抓取JavaScript动态加载内容的实践案例
|
5月前
|
Web App开发 数据采集 移动开发
提升Selenium在Chrome上的HTML5视频捕获效果的五个方法
在Selenium中优化Chrome的HTML5视频捕获涉及更新Chrome和ChromeDriver、配置浏览器选项、使用代理IP、调整加载策略及确保安装了正确编解码器。例如,更新驱动程序,添加如`--autoplay-policy`和`--proxy-server`的命令行参数,使用代理以防止被封,设置页面加载策略为'eager',并安装必要的编解码器来确保视频播放。代码示例展示了如何集成这些优化措施。
193 2
提升Selenium在Chrome上的HTML5视频捕获效果的五个方法
|
6月前
|
数据采集 数据可视化 测试技术
C#生成Selenium测试报告:实用方法与技巧
在C#中使用Selenium进行自动化测试时,结合代理IP和ExtentReports能增强测试安全性和报告质量。安装必备工具如Selenium WebDriver、NUnit和ExtentReports。在测试设置中,配置代理(如亿牛云爬虫代理)以隐藏IP,通过ChromeOptions定制UserAgent,并添加Cookie。测试代码示例展示了如何打开网页、执行搜索并生成详细的测试报告。使用ExtentReports可创建可视化测试结果,便于团队分析。
C#生成Selenium测试报告:实用方法与技巧
|
2月前
|
数据采集 前端开发 测试技术
Selenium中定位元素的9种方法
在Selenium中,定位页面元素是自动化测试和网页爬虫的基础。常用的9种元素定位方法包括:ID、Name、Class Name、Tag Name、CSS Selector、XPath、Link Text、Partial Link Text,以及XPath和CSS选择器的组合使用。每种方法各有优劣,建议根据页面的具体情况和元素的属性选择最合适的方法,并使用显式等待确保元素可用。
410 5
|
2月前
|
Web App开发 前端开发 测试技术
Selenium 4新特性解析:关联定位器及其他创新功能
【10月更文挑战第6天】Selenium 是一个强大的自动化测试工具,广泛用于Web应用程序的测试。随着Selenium 4的发布,它引入了许多新特性和改进,使得编写和维护自动化脚本变得更加容易。本文将深入探讨Selenium 4的一些关键新特性,特别是关联定位器(Relative Locators),以及其他一些重要的创新功能。
208 2
|
2月前
|
Web App开发 Java 测试技术
使用selenium+chromedriver+xpath爬取动态加载信息(一)
使用selenium+chromedriver+xpath爬取动态加载信息(一)
80 1
|
2月前
使用selenium+chromedriver+xpath爬取动态加载信息(二)
使用selenium+chromedriver+xpath爬取动态加载信息(二)
49 0
|
4月前
|
JavaScript 前端开发
[selenium]相对定位器
[selenium]相对定位器
|
5月前
|
测试技术 API Android开发
《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
【7月更文挑战第15天】这是关于自动化测试框架中Selenium API二次封装的教程总结。教程中介绍了如何设计一个支持不同浏览器测试的页面基类(BasePage),该基类包含了对Selenium方法的二次封装,如元素的输入、点击、清除等常用操作,以减少重复代码。此外,页面基类还提供了获取页面标题和URL的方法。
125 2
|
6月前
|
Web App开发 Python
selenium firebug firePath xpath问题
selenium firebug firePath xpath问题
33 0

热门文章

最新文章