什么是xpath呢?

官方介绍:XPath即为XML路径语言,它是一种用来确定XML1(标准通用标记语言3的子集)文档中某部分位置的语言。反正小编看这个介绍是云里雾里的,通俗一点讲就是通过元素的路径来查找到这个元素的,相当于通过定位一个对象的坐标,来找到这个对象。

一、xpath:属性定位

1、xptah也可以通过元素的id、name、class这些属性定位,如下图

2、定位方法如下:

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://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:其它属性

1.如果一个元素id、name、class属性都没有,这时候也可以通过其它属性定位到

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")

#用xpath通过其他属性定位

driver.find_element_by_xpath("//*[@autocomplete='off']").send_keys("selenium")

三、xpath:标签

1.有时候同一个属性,同名的比较多,这时候可以通过标签筛选下,定位更准一点

2.如果不想制定标签名称,可以用*号表示任意标签

3.如果想制定具体某个标签,就可以直接写标签名称

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")

#用xpath通过id属性定位

driver.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")

#用xpath通过name属性定位

driver.find_element_by_xpath("//input[@name='wd']").send_keys("selenium")

#用xpath通过其他属性定位

driver.find_element_by_xpath("//input[@autocomplete='off']").send_keys("selenium")

四、xpath:层级

1.如果一个元素,它的属性不是很明显,无法直接定位到,这时候我们可以先找它老爸(父元素)

2.找到它老爸后,再找下个层级就能定位到了

3.如上图所示,要定位的是input这个标签,它的老爸的id=s_kw_wrap.

4.要是它老爸的属性也不是很明显,就找它爷爷id=form

5.于是就可以通过层级关系定位到

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")

#通过定位它的父亲来定位input输入框

driver.find_element_by_xpath("//span[@id='s_kw_wrap']/input").send_keys("selenium")

#通过定位它的爷爷来定位input输入框

driver.find_element_by_xpath("//form[@id='form']/span/input").send_keys("selenium")

五、xpath:索引

​1.如果一个元素它的兄弟元素跟它的标签一样,这时候无法通过层级定位到。因为都是一个父亲生的,多胞胎兄弟。

​2.虽然双胞胎兄弟很难识别,但是出生是有先后的,于是可以通过它在家里的排行老几定位到。

​3.如下图三胞胎兄弟

4.用xpath定位老大、老二和老三(这里索引是从1开始算起的,跟Python的索引不一样)

#用xpath定位老大

driver.find_element_by_xpath("//select[@id='nr']/option[1]").click()

#用xpath定位老二

driver.find_element_by_xpath("//select[@id='nr']/option[2]").click()

#用xpath定位老三

driver.find_element_by_xpath("//select[@id='nr']/option[3]").click()

六、xpath:逻辑运算

1.xpath还有一个比较强的功能,是可以多个属性逻辑运算的,可以支持与(and)、或(or)、非(not)

2.一般用的比较多的是and运算,同时满足两个属性

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")

#xpath逻辑运算

driver.find_element_by_xpath("//*[@id='kw' and @autocomplete='off']")

七、xpath:模糊匹配

1.xpath还有一个非常强大的功能,模糊匹配

​2.掌握了模糊匹配功能,基本上没有定位不到的

​3.比如我要定位百度页面的超链接“hao123”,也可以通过by_link,也可以通过by_partial_link,模糊匹配定位到。当然xpath也可以有同样的功能,并且更为强大。

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")

#xpath模糊匹配功能

driver.find_element_by_xpath("//*[contains(text(),'hao123')]").click()

#xpath模糊匹配某个属性

driver.find_element_by_xpath("//*[contains(@id,'kw')]").click()

#xpath模糊匹配以什么开头

driver.find_element_by_xpath("//*[starts-with(@id,'s_kw_')]").click()

#xpath模糊匹配以什么结尾

driver.find_element_by_xpath("//*[ends-with(@id,'kw_wrap')]").click()

#xpath支持正则表达式

driver.find_element_by_xpath("//*[matchs(text(),'hao123')]").click()

python xml xpath定位_selenium3 + python - xpath定位相关推荐

  1. python xml etree amp,用python etree打印XML的嵌套元素

    我正在尝试构建一个脚本来读取XML文件. 这是我第一次分析一个XML,我使用的是带有xml.etree.elementtree的python.我要处理的文件部分如下: DESCRIPTION Rene ...

  2. python xml etree word_使用python格式化插入的元素xml.etree模块,包括新行

    我正在将一个元素插入到一个大的xml文件中.我希望插入的元素位于顶部(所以我需要使用根.插入方法,并且不能仅附加到文件中).我也希望元素的格式与文件的其余部分相匹配.在 原始XML文件的格式为 ... ...

  3. python自动填日志_Selenium3+python自动化012+日志logging基本用法、高级用法

    1.关键字: login 登录 log 日志 logging python日志模块 2.什么叫日志: 日志用来记录用户行为或者代码的执行过程 3.日志使用的地方: 1.排错的时候需要打印很多细节来帮助 ...

  4. Python XML解析器– ElementTree

    Python XML parser provides us an easy way to read the XML file and extract useful data. Today we wil ...

  5. pythonxpath定位_selenium+python自动化-xpath定位语法

    前言 右键查看目标元素的xpath地址,这样查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. 什么是xpath呢? ...

  6. python xpath定位不到_Xpath定位方法深入探讨及元素定位失败常见情况

    一.Xpath定位方法深入探讨 (1)常用的Xpath定位方法及其特点 使用绝对路径定位元素. 例如: driver.findElement(By.xpath("/html/body/div ...

  7. python爬虫xpath教程_使用 Xpath 进行爬虫开发

    使用 Xpath 进行爬虫开发 Xpath( XML Path Language, XML路径语言),是一种在 XML 数据中查找信息的语言,现在,我们也可以使用它在 HTML 中查找需要的信息. 既 ...

  8. Python网络爬虫开发实战使用XPath,xpath的多种用法

    XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言.它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索. 很多人学习python, ...

  9. absolute如果找不到定位父元素那么会相对于谁进行定位_selenium+python面试题目总结,完整度80%,看看你会多少?...

    很多小伙伴会经常私信来问我问题,有些来不及回答,实在抱歉! 本篇有点长!看到最后,给自己一个学习的地方! 1. WebDriver原理 webDriver是按照client/server模式设计,cl ...

最新文章

  1. 抢票 | AI未来说学术论坛第八期 深度学习特别专场
  2. OpenCASCADE:Mac OS X平台使用Xcode构建OCCT
  3. MySQL 之 information_schema
  4. 微人事项目实战的数据库脚本_EMP微前端实战之cocos2d线上项目
  5. 让游戏达到60帧真的重要吗?
  6. 史上最大源码泄露事件:iOS 关键源代码被匿名公布在 GitHub 上
  7. elasticsearch的javaAPI之index
  8. 17. 使用“swap技巧”除去多余得容量
  9. Linux Mint---开启桌面三维特效
  10. 11位大牛与您共建数智升级路径
  11. lzg_ad:GHOST带EWF功能的XPE操作系统
  12. “沉浸式”住宿体验——酒店的新瓶,民宿的老酒
  13. 如何下载B站视频,解决视频没有声音/音画分离问题(IDM+Potplayer)
  14. VMware教程:设置 CentOS 7 共享文件夹
  15. 微信小程序开发之文件上传下载应用场景(附Demo源码)
  16. emmc和MMC的区别
  17. 两位数合并成一个四位数的C++代码
  18. 单字双字三字_单字写法-单字怎么读-双字繁体字怎么写
  19. 这些支付的负面记录,分分钟影响你的贷款
  20. Deep Learning读书笔记2---深度前馈网络

热门文章

  1. newcoder 炼金术师(递推
  2. 【强连通分量】太空战队
  3. css 超出省略号碰上nowrap
  4. MySQL修改表字段名
  5. 了解和使用IE11企业模式
  6. Tor源码分析七 -- 握手协议
  7. 数学测试题整理 ——2导数与微分
  8. R语言使用rnorm函数生成正太分布数据、使用plot函数可视化散点图、使用ylim参数自定义Y轴取值范围
  9. 货拉拉大数据对BitMap的探索与实践(上)
  10. 专为实习生开发的一款程序:实习宙