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

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

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

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

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

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

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

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

 

这样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的元素定位方法哦~~

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl_奕然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值