我们工作中经常用到的定位方式有八大种:id  name  class_name  tag_name  link_text  partial_link_text  xpath  css_selector

本篇内容主要说我们功能最强大的xpath定位

1.xpath绝对路径定位:

语法:直接页面所有标签一级一级向下指定,直到找到自己定位的元素;例如:html/body/div/div/span/input

2.根据标签属性进行定位:

语法://标签名[@属性名="属性值"]  标签名可以使用*代替,*表示通配所有。一般我们指定上标签可以更准备的定位

#通过id属性定位
driver.find_element_by_xpath('//input[@id="kw"]') #通过name属性定位
driver.find_element_by_xpath('//input[@name="wd"]') #通过class属性定位
driver.find_element_by_xpath('//input[@class="s_ipt"]')

3.通过逻辑运算符:and or not 连接多个属性进行定位;

# 通过and连接属性
driver.find_element_by_xpath('//input[@id="kw" and autocomplete="off"]') # 通过or连接属性
driver.find_element_by_xpath('//input[@id="kw" or autocomplete="off"]') # 通过not连接属性
driver.find_element_by_xpath('//input[@id="kw" not autocomplete="off"]')

4.在实际操作中肯定会遇到动态属性值,针对于动态值xpath提供了模糊定位,匹配开头属性值和结束属性值

#通过contains()模糊定位
driver.find_element_by_xpath('//input[contains(@id,"k")]') #通过starts-with()匹配开头的属性值
driver.find_element_by_xpath('//input[starts-with(@id,"k")]') #通过ends-with()匹配结束的属性值
driver.find_element_by_xpath('//input[ends-with(@id,"w")]')

5.通过文本值定位:语法://input[text()="文本值"]  注意text不是一个属性所以不需要加@

#通过文本进行定位
driver.find_element_by_xpath('//a[text()="关于百度"]')

最新文章

  1. python3验证码机器学习
  2. Java是目前最广泛的_______编程语言
  3. [HTML] CSS3 圆角
  4. Maven初步搭建 (一)
  5. C语言 三级指针的应用
  6. ASP.NET MVC5 入门
  7. Shell脚本升级CentOS php版本v
  8. Java---replace与replaceAll的区别
  9. SAS学习笔记
  10. asp.net 面试基础题
  11. 【MongoDB】windows平台搭建Mongo数据库复制集(相似集群)(一)
  12. 饮冰三年-人工智能-Python-29瀑布流
  13. C# 8中的可空引用类型
  14. python Flask web框架
  15. Pandas: 使用str.replace() 进行文本清洗
  16. BitmapImage处理网络图片,例如阿里云获取的图片。异步加载到需要显示的控件上。提升速度非常明显。
  17. Jquery的Ajax中contentType和dataType的区别
  18. Query to find the eligible indexes for rebuilding
  19. GIS专业书籍、文档、数据、网站、工具等干货
  20. iOS 封装跑马灯和轮播效果

热门文章

  1. python基础-集合set及内置方法
  2. 解决靶机Bee-Box 键盘乱序问题
  3. crontab中部署Python脚本注意事项
  4. Java 干货之深入理解Java泛型
  5. 【原创】基于.NET的轻量级高性能 ORM - TZM.XFramework 之让代码更优雅
  6. 深度学习tensorflow实战笔记 用预训练好的VGG-16模型提取图像特征
  7. [考试反思]0901NOIP模拟测试34:游离
  8. NOIP模拟 36
  9. js 将base64转为图片
  10. on duplicate key update 的使用(数据库有就修改,没有就添加数据)