chromedriver的版本问题:如果出现版本不匹配,可以尝试换一个版本的chromedriver;

web自动化的元素定位--8大元素定位

6种元素:

id:---id是唯一的,这时候可以用id定位

name:---用户交互有关系,例如有input、select、textarea

class_name:---定位的元素一定不能有空格,如果class_name很长,里面有空格,这时候可以只截取部分进行定位;如果复制整个class_name,就会报错

link_text:---定位超链接文本

partial_link_text:---定位超链接文本,部分匹配去查找

tagname:---爬虫喜欢用

通过源码,可以知道:6大元素定位,最终都是通过css选择器定位;所以大体上来说只有css和xpath两种元素定位。

2种路径

xpath:---xml 路径语言,使用xpath分为绝对路径和相对路径,建议用相对路径

css:

xpath

写xpath表达式之前先去浏览器写,确定表达式没错,再写到Python中

xpath相对路径://span[@class='bg s_ipt_wr quickdelete-wrap'] ---span是你要定位的标签名,然后[],里面以@开头,跟着元素值;

----注意:前面说使用class_name定位的时候,值不能有空格;但是当我们用xpath定位的时候,class_name需要复制全部值,包括空格,不然无法找到该元素

contain函数:当属性值很长的时候,可以使用contain函数,只写值的某一部分://span[contains(@class, 's_ipt_wr')]

----只有class_name里面包含了's_ipt_wr'就符合条件

text文本在web自动化里面不是元素属性,不能用@符号去表示;直接写成: 标签名[text(),值],例如--//a[contains(text(),"新")]

xpath的索引是从1开始的。

----坑:一般不用,因为索引有时候会变;索引的优先级非常高,如果非要用索引定位,就需要手工提高其他部分的优先级,最后才用索引。例如:(//a[contains(text(),"新")])[1]

xpath轴定位:--面试常问需要记住轴定位的一些表达,根据上面的语法介绍链接学习

5.1 传统组合上下级关系,/和//,在两个元素之间:

---/表示父子关系://span[contains(@class, 's_ipt_wr')]/span[@class='soutu-btn']

---//表示祖先和孙子关系://form[@id='form']//span[@class='soutu-btn']

5.2 轴定位表示:

通过span去找form,就是定位到当前节点,通过当前节点找祖辈(当前节点名//ancestor::祖辈标签名):---//span[@class='soutu-btn']//ancestor::form[@id='form']

xpath总结点

什么时候使用xpath定位:

1.1 没有明显特征的元素,或者说明显特性元素找出来的值有很多个(例如id/name/class_name)

1.2 id/name/class_name不是唯一的时候

杜绝直接copy浏览器中的xpath,一个是因为copy出来的是绝对路径;另一个是copy的路径并不智能。并且在初学xpath的时候,不推荐使用xpath插件,工作中可以使用去提高效率---面试的时候xpath必考,需要自己可以熟练熟悉xpath表达式。

表示关系

3.1 . 或者..

3.2 /或者 // 只能从父级元素到子级元素

3.3 轴运算, //span[@class='soutu-btn']//parent::span 可以从子级找父级,只要记住关系名称、当前节点名称;

** 如果不知道要找的父级节点名称,可以用通配符* 代替 *----就是//span[@class='soutu-btn']//parent::

拓展:css选择器---可以自己看语法介绍

input#kw: #代表了id

input.soutu-btn: .代表了class_name

面试题

css和xpath的优劣势:

css更加简洁

xpath的功能更加强大,对于简单元素,使用css更加方便;对于复杂元素,使用xpath更合适;

xpath可以通过文本进行定位,但是css不行;

效率。css的解析效率更快一定,xpath的效率比css低;

text()文本定位

在web自动化中,使用selenium有没有通过text文本进行定位的方法??

A:有,可以通过xpath对text文本进行定位。

在web自动化中,使用selenium有没有直接通过text文本进行定位的方式?

A:没有,selenium没有直接封装text定位的方式

python xpath用法_Python--xpath的使用相关推荐

  1. python中xpath用法_python xpath 基本用法

    发布时间: pythonercn 8 months, 3 weeks ago 在进行网页抓取的时候,分析定位html节点是获取抓取信息的关键,目前我用的是lxml模块(用来分析XML文档结构的,当然也 ...

  2. python基本用法_Python基本用法总结

    Python 的设计具有很强的可读性,易于使用.这里对python基本用法做一个总结介绍. 一. 变量类型 1. 变量赋值 Python中的变量赋值不需要类型声明,每个变量在使用前都必须赋值,变量赋值 ...

  3. python end用法_python中end的使用方法

    python中end的使用方法 发布时间:2020-06-17 09:47:13 来源:亿速云 阅读:178 这篇文章给大家分享的是有关python中end的使用方法,小编觉得挺实用的,因此分享给大家 ...

  4. python try用法_python中的try的用法

    展开全部 try语句32313133353236313431303231363533e78988e69d8331333431366238是python里面的控制语句,与except,finally配合 ...

  5. python的xpath用法_python之Xpath语法

    python视频教程栏目介绍python的Xpath语法. 一.XMl简介 (一)什么是 XMLXML 指可扩展标记语言(EXtensible) XML 是一种标记语言,很类似 HTML. XML 的 ...

  6. python中xpath用法_Python中的xpath基础使用

    前言: XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. XPath 含有超过 100 个内建的函数.这些函数用于字符串值.数值.日期和时 ...

  7. python的xpath用法_Python爬虫杂记 - Xpath高级用法

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

  8. python 包用法_Python 基础教程之包和类的用法

    Python 基础教程之包和类的用法 这篇文章主要介绍了 Python 基础教程之包和类的用法的相关资料, 需要的朋友可以参考下 Python 是一种面向对象.解释型计算机程序设计语言,由 Guido ...

  9. python yield用法_Python中迭代器和生成器的区别?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  10. python namedtuple用法_Python namedtuple(命名元组)使用实例

    namedtuple对象就如它的名字说定义的那样,你可以给tuple命名,具体看下面的例子:import collections Person=collections.namedtuple('Pers ...

最新文章

  1. 利用OpenSSH实现基于秘钥的认证
  2. 键盘上每个键作用!!!
  3. cmd命令将web项目打成jar包_2020全网首发!JDK14之jpackage命令尝鲜
  4. getchar(),putchar()用法
  5. java中对象 引用的概念_java中的对象 方法 引用 等一些抽象的概念是什么意思呢?...
  6. CoffeeScript 学习笔记
  7. Nginx源码阅读 --- nginx evnet事件接受请求时,函数执行过程
  8. C++ 什么叫做离散化
  9. 15. 固若金汤:网站的安全架构
  10. Java程序设计基础——cmd编译运行java文件详细步骤
  11. Yii2 —— 表单美化
  12. 重装WIN7系统 - 通用激活
  13. php 转换带声调的字幕,PHP 汉字、拼音、unicode、声母、韵母互相转换
  14. 计算机视觉、模式识别、人工智能
  15. 企业文化与“酱油党”
  16. 考研数学公式默写记忆PDF
  17. 老男孩教育运维班100台规模集群全网数据备份项目上机实战
  18. TCP连接三次握手协议,释放连接四次挥手,以及使用 awl伪造mac地址进行多线程syn洪泛攻击。...
  19. 惠普HP Laser MFP 136a 打印机驱动
  20. ue富文本编辑器使用

热门文章

  1. Golang 元素值在经过通道传递时会被复制,这个复制是浅复制
  2. Aho-Corasick 多模式匹配算法(AC自动机) 的算法详解及具体实现
  3. 【Sql Server】DateBase-结构化查询基础
  4. 分层条件关系网络在视频问答VideoQA中的应用:CVPR2020论文解析
  5. 客快物流大数据项目(五十三):实时ETL模块开发准备
  6. Cocos Creator 预制的使用模板(一般用于UI)
  7. HarmonyOS UI开发 AdaptiveBoxLayout(自适应盒子布局) 的使用
  8. It is currently in use by another Gradle instance
  9. startActivity(xx,xx.class) 传递数据
  10. JAVA课上动手动脑问题以及课后测试1,2总结