https://www.cnblogs.com/hanmk/p/8997786.html

selenium定位元素的方法有很多种,像是通过id、name、class_name、tag_name、link_text等等,但是这些方法局限性太大,拿id属性来说,首先一定不会每个元素都有id属性,其次元素的id属性也不一定是固定不变的。所以这些方法了解一下即可,我们真正需要熟练掌握的是通过xpath和css定位,一般只要掌握一种就可以应对大部分定位工作了。

下面总结一下xpath的定位方法,结合自己练习的实例加深一下了解

一、首先需要了解一下xpath的概念和基本语法

网上关于xpath的教程比较少,可以看一下菜鸟教程和w3cschool的相关资料:http://www.runoob.com/xpath/xpath-tutorial.html、http://www.w3school.com.cn/xpath/index.asp

二、常用的xpath定位方法

1.利用标签内的属性进行定位

(1)通过id属性

xpath = "//a[@id='start_handle']"
//a 表示选取所有a元素,加上[@id='start_handle']表示选取id属性为'start_handle'的a元素
(2)通过name属性定位

xpath = "//input[@name='custName']"

概括:

xpath = "//标签名[@属性='属性值']"

属性判断条件:最常见为id,name,class等等,属性的类别没有特殊限制,只要能够唯一标识一个元素即可。

当某个属性不足以唯一区别某一个元素时,也可以采取多个条件组合的方式,如下:

xpath= "//input[@type='XX' and @name='XX']"

2.利用text()方法定位

如上所示,在【上一步】按钮的<a></a>标签之间有一段文本“上一步”,那么可以通过下面这种方式来定位

xpath = "//a[text()='上一步']"

【开始办理】按钮可以使用如下路径:

xpath = "//a[text()='开始办理']"

3.利用contains()方法定位,也叫模糊定位

xpath = "//标签名[contains(@属性, '属性值')]"

取href的关键信息'basicinfo',这样也可以定位到【开始办理】按钮
xpath = "//a[contains(@href, 'basicinfo')]" 
4.如果一个元素无法通过自身属性直接定位到,则可以先定位它的父(或父的父,它爷爷)元素,然后再找下一级即可例如定位百度搜索框,可以按照此种方式试验一下(主要是看一下这个思路)
百度搜索框对应<input>标签,定位<input>标签的话,可以先定位<form>标签,再定位<form>标签的子元素<span>标签,最后找到<input>标签
driver.find_element_by_xpath("//form[@id='form']/span[contains(@class,'s_ipt_wr')]/input").send_keys('python')

注意:在第二步定位<span>元素时,没有用<span>的id属性,因为在实际中发现通过webdriver打开的浏览器网页中<span>标签没有id属性了(所以选用<span>标签的class属性,并且通过contains()模糊定位),如下:

定位百度一下按钮

driver.find_element_by_xpath("//form[@id='form']/span[@class='bg s_btn_wr']/input").click()
或者 "//form[@id='form']//input[@id='su']"

总之,XPATH路径表达式需要多写多练,孰能生巧。还有当定位失败时不要慌,找下原因,眼见不一定为实,像上面定位百度搜索框时,通过id属性没有定位到<span>标签,查看通过webdriver打开的网页元素时,发现<span>标签的id属性没了,只有class属性了,这个时候就需要换一个属性,如class属性(至于为啥会消失,我也不知道,希望有高手不吝赐教)。

xpath定位(一)相关推荐

  1. Selenium之XPATH定位(第二篇)

    世界上最远的距离大概就是明明看到一个页面元素站在那里,但是我却定位不到!! selenium定位元素的方法有很多种,像是通过id.name.class_name.tag_name.link_text等 ...

  2. java selenium (六) XPath 定位

    xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. 阅读目录 什么是xpath xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面, ...

  3. selenium自学笔记---ecshop购买脚本 xpath定位元素(下拉框,单选框)

    本机环境:xamppv3.2.1+ecshop3.0 1.元素定位写对,却一直报错,发现是页面元素加载的太慢,所以加上延时 from selenium import webdriverimport t ...

  4. 二:unittest框架配合selenium之xpath定位

    刚开始学习selenium自动化测试时,犯了一个不该犯的错误,偷懒,使用火狐浏览器中的扩展FIREBUG,FIREPATH来辅助定位. 虽然用的定位方法大多数是使用XPATH方法,但是是工具定位出来的 ...

  5. python中xpath定位下拉菜单_Selenium2+Python3.6实战(八):定位下拉菜单出错,如何解决?用select或xpath定位。...

    在登录界面,有时候会有几种不同的角色,针对不同角色定位到的信息是不一样的.查询资料知道定位下拉框的元素有两种方式:Xpath和select. 但是使用xpath定位时,user定位到了,登录的时候却是 ...

  6. python xpath定位元素方法_Python爬虫杂记 - Xpath高级用法

    xpath 高级用法 1. 匹配当前节点下的所有: .// . 表示当前 // 表示当前标签下的所有标签 注: 要配合使用 2. 匹配某标签的属性值: /@属性名称 这里以input里的value值为 ...

  7. python xpath定位打印元素_python基础教程:8种selenium元素定位的实现

    前言 selenium是一个非常厉害的爬虫利器,不,简直是神器了,它可以自动的控制浏览器,但是你得告诉浏览器,你想干嘛,爬哪里,这时候就要用到元素定位了,在HTML中都有着不同的标签和属性,selen ...

  8. Selenium webdriver中的xpath定位

    使用selenium进行自动化测试,其实很多时候就是模拟用户的操作,在前端页面对元素进行操作,因此元素的定位在自动化测试中是至关重要的.关于如何 使用id,className,name,linkTex ...

  9. 从入门到入土:Python爬虫学习|实例练手|爬取百度产品列表|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  10. 元素定位-XPATH定位方法总结

    1.Xpath定位方法探讨 xpath是比较常用的一种定位元素的方式,因为它很方便,缺点是,消耗系统性能.如果Xpath使用的比较好,几乎可以定位到任何页面元素,而且受页面变化影响较小. 1.1.什么 ...

最新文章

  1. 机械转嵌入式还是it?学嵌入式好还是java好?
  2. java 在线监测 trace_JDK自带的性能调优监测工具使用示例
  3. 这些建议需要竞赛组委会酌情考虑
  4. postman断言测试脚本二 (对数据格式和内容匹配测试)
  5. C#编译器选项(目标平台)
  6. _exit()函数与exit()函数的区别
  7. unity 中的UGUI 屏蔽鼠标穿透
  8. python队列及其实现
  9. python源码深度剖析_Python源码剖析-深度探索动态语言核心技术 PDF 下载
  10. Android将2张图片合成一张图片(Bitmap类型)附二维码生成
  11. 计算机应用基础上海交通大学出版社双色版,计算机应用基础模块化教程
  12. 流利阅读 2019.1.22 Top S. Korean animal rights group slammed for destroying dogs
  13. windows phone的那些应用们 有意思的,good design的,有用的...
  14. Kettle【实践 01】Linux环境下使用Azkaban定时调用Kettle的KJB或KTR脚本实现自动化数据处理(完整流程实例分享:包含sql+ktr+shell+flow相关文件云资源)
  15. 计算机毕业设计Python+uniapp学生考勤系统小程序(小程序+源码+LW)
  16. Brocade 6510 交换机清空配置,重新initiator交换机
  17. java项目中数据查询慢问题
  18. mysql实现物化视图详解及视图与物化视图区别
  19. How Apache Zeppelin runs a paragraph
  20. 简述游标原理 mysql_mysql游标的原理与用法实例分析

热门文章

  1. 由《骗子伪装成10086发送诈骗短信》联想到程序猿的内在修炼
  2. css实现div旋转任意角度
  3. 匠客传媒:论文降重的必备技巧
  4. 20170204老男孩用过的一些运维软件
  5. 报表工具对比选型系列——图形
  6. c语言编程实现二进制计算器,本程序是用纯C语言编的一个基于命令行的四则运算计算器。主要用于计算四则运算表达式的值,同时可以实现四...
  7. android判断不同手机厂商,打开允许后台运行APP弹窗
  8. 9.3.2 从 ZIP 文件中解压缩
  9. 情人节python代码_情人节攻略:用Python撒狗粮的正确姿势
  10. Oracle 生成一张测试表并插入随机的个人基本信息数据