#Xpath 里/html 表示根节点
# xpath 绝对路径里 /html/body/div 等价于 css html>body>div
from selenium import webdriver
wd=webdriver.Chrome()
url='http://cdn1.python3.vip/files/selenium/test1.html'
wd.get(url)
# eles=wd.find_elements_by_xpath('/html/body/div')
# for ele in eles:#当成多个小的元素处理
#     print('--'*30)
#     print(ele.text)eles=wd.find_element_by_xpath('/html/body/div')
print(eles.text) #把它当成单个大的元素# xpath 相对路径选择div //div//p(等价于css里 div>p )双斜杠表示下面的相对子节点,
# 可以不是直接子节点,直接子节点用单斜杠/,//div/p(等价于 css里 div p)
#div下的所有节点 //div/*#Xpath可以根据属性来选择元素 [@属性名=‘属性值’];注意前面有@,属性值必须用单引号或者双引号,
# 比如选择//*[@id='west'] (css表达式 *[id='west'])#xpath里class名有多个 //p[@class="capital huge-city"] (在css里 可以 .capital)
#//*[@multiple]# http://cdn1.python3.vip/files/selenium/sample1.html
# CSS属性值包含某个字符窜的元素,可以用css这种表达式选择a[href*="miitbeian"];Xpath 表达式 //*[contains(@href,'miitbeian')]
#要选择a节点,里面的href属性以http开头 a[href^="http"];Xpath 表达式//*[starts-with(@class,'m')],//*[starts-with(@class,'m')]
#要选择a节点,以gov.cn结尾 a[href$='gov.cn'];Xpath2.0 表达式 //*[ends-with(@href,'vn')] Xpath1.0不支持
wd.quit()

更新一下,新增点内容,xpath定位法和css的其它区别,以及xpath所具有css没有的属性

Xpath里按次序选择,//p[2]选择的是 p类型第2个的子元素 , 不是第2个子元素,并且是p类型,(相当于CSS p:nth-of-type(2))
看链接“http://cdn1.python3.vip/files/selenium/test1.html”里Ctrl+F 搜索下,比较区别就知道了
//div//p[2] (等价于CSS div p:nth-of-type(2) )
假如我们就是想选择父元素为div的第2个子元素,不管是什么类型//div/*[2] (等价于CSS div > :nth-child(2))
倒数第1个用Xpath  //p[last()] 代表p类型的最后一个(等价于CSS p:nth-last-of-type(1)),倒数第2个Xpath用 //p[last()-1],倒数第三 -2
Xpath的范围选择,选取option类型第1到2个子元素 //option[position()<=2]或者//option[position()<3],选取前2个元素
选取后2个,//*[@class='multi_choice']//option[position()>=last()-1]Xpath 组合选择用|分开,比如要选择所有的option元素和所有的h4元素,可以使用 //option|//h4(等价于option,h4)
Xpath可以选择父节点,这是CSS做不到,比如//div[@id="china"]/..是选取这个元素//div[@id="china"]的父节点,继续父节点就再加/..,/div[@id="china"]/../..
Xpath兄弟节点选择 following-sibling::,如选择后面的所有兄弟节点//*[@class='single_choice']/following-sibling::*(等同于.single_choice~*)
假如要选择后面的select类,直接加//*[@class='single_choice']/following-sibling::select,在前的用preceding-sibling 如//*[@class='multi_choice']/preceding-sibling::*前面的所有兄弟节点
'''
# Xpath的坑
# CSS #china>p  Xpath //div[@id='china']/p
china=wd.find_element_by_id('china')
# elements=china.find_elements_by_xpath('.//p')#从上面的对象china里找元素,一定要加.代表从返回的对象内部查找,如果不加点是从全部网页里找,不加点相当于从webdriver里查找
# for ele in elements:
#     print('-'*30)
#     print(ele.get_attribute('outerHTML'))
#验证一下,CSS没有这个问题
elements=china.find_elements_by_css_selector('p')#从上面的对象china里找元素,一定要加.代表从返回的对象内部查找,如果不加点是从全部网页里找,不加点相当于从webdriver里查找
# elements=china.find_elements_by_tag_name('p')
for ele in elements:print('-'*30)print(ele.get_attribute('outerHTML'))
sleep(3)
wd.quit()

python selenium xpath相对路径,绝对路径表达式包含什么,以什么开头,以什么结尾xpath具有css没有的属性是什么?xpath的坑有哪些?相关推荐

  1. python—selenium —xpath定位方法详解

    前言 今天我们来聊聊selenium -- xpath定位方法,我们都知道selenium有八大定位策略分别是id.name.class name.tag name.link text.partial ...

  2. Python selenium根据class定位页面元素,xpath定位

    Python selenium根据class定位页面元素 在日常的网页源码中,我们基于元素的id去定位是最万无一失的,id在单个页面中是不会重复的.但是实际工作中,很多前端开发人员并未给每个元素都编写 ...

  3. Python selenium —— 文件下载,不弹出窗口,直接下载到指定路径

    今天谈谈文件下载吧,很多人不会处理弹出的文件下载框,其实跟上传类似,可以用autoit和win32api解决,方法类似,可以看博主之前的文章 Python selenium -- 文件上传所有方法整理 ...

  4. python selenium语法_selenium之xpath语法总结

    xpath语法 1. 什么是XPath? XPath是一种XML路径,用于浏览页面的HTML结构.他是一种语法或者语言用来查找使用XML路径表达的网页中的任意元素. XPath的基本形式如下: Xpa ...

  5. python selenium xpath_python+selenium十四:xpath和contains模糊匹配

    xpath可以以标签定位,也可以@任意属性: 如:以input标签定位:driver.find_element_by_xpath("//input[@id='kw']") 如:@t ...

  6. python+selenium打开浏览器-设置浏览器路径和驱动器路径

    python+selenium打开浏览器 from selenium import webdriver from selenium.webdriver.chrome.options import Op ...

  7. 测试开发面试准备之python selenium API

    一.浏览器操作 1.浏览器最大化 driver.maximize_window() #将浏览器最大化显示 2.设置浏览器宽.高 driver.set_window_size(480, 800)#设置浏 ...

  8. python+selenium老中年人的使用与精进(持续施工中)

    前提要求:具备python基础便可以,老年人也无妨~ 这里针对的是selenium常见.常用的API操作,更多应用于web项目中. 关于selenium:SeleniumSelenium automa ...

  9. python Selenium 常见操作 元素定位

    一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locating-elements.html         这里有各种策略用于定位网页中的 ...

最新文章

  1. 报表网红是Tableau,提测网红是MadPecker
  2. 通过相似性或相异指数的数值分布比较群落Beta多样性高低
  3. 基于Unity的弹幕游戏多人联机尝试
  4. Nginx 多进程连接请求/事件分发流程分析
  5. UVA1025——A Spy in the Metro【dp】
  6. Windows巡检IIS指标脚本(PowerShell实现)
  7. ubuntu 18.04 安装 中文 拼音 输入法
  8. windows下编译64位程序时没有没_WIN32定义
  9. ImportError: DLL load failed: 找不到指定的模块。Import tensorflow时
  10. 2014年计算机应用文摘,2014年江西信息技术高考试卷Word版
  11. 区块链到底是个什么鬼?一幅漫画让你秒懂!
  12. android银联支付
  13. 百度UEditor 整合135编辑器到功能栏
  14. 大学军训板报计算机学院,军训板报
  15. 手机屏幕常见故障_手机测试常见问题总结!
  16. Word文字怎么加粗
  17. 海航集团怎么样温暖世界的呢?
  18. Linux 2.6.19.x 内核编译配置选项简介(内核裁剪)
  19. yum安装Jenkins报错Error in PREIN scriptlet in rpm package jenkins-2.204.5-1.1.noarch
  20. int, short, long ,long long 区别

热门文章

  1. linux6进入单用户,CentOS6/CentOS7进入单用户模式
  2. python 逆向生成正则表达式_一篇搞定Python正则表达式
  3. 录音转换Mp3-Lame4Android 上篇-带详细SO库编译教程
  4. MySQL(一)基础使用
  5. windows 10 安装 SolidWorks 2018 教程
  6. 如何获得英语单词的发音?增加 IPA-SAMPA
  7. 发电机导电滑环安装及注意事项
  8. 18日,晴,也无风雨也无晴
  9. Socket编程相关类说明
  10. Hyperlegder Fabric 1.4.4 手动搭建BYFN网络