目标: Xpath方法

  
1、定位一组元素的方法
 
element = driver.find_elements_by_*("*")      * 可以是name,tag_name,
 
注意:元素定位方法如果带有s,则执行结果返回的是列表类型数据,里边的数据是多个元素对象
 
可以通过列表的下标(索引)获取对应的目标对象元素,再执行操作
 
   依据:
 
  • 没有s和带有s的定位方法的相互依据:
  • 1.如果调用元素定位方法后,再点语法,提示的均为列表方法,则方法带s
  • 2.如果调完元素定位方法后,在点语法,提示的均为元素方法,则方法不带s
 
2、元素定位—XPath方法
 
XPath是XML Path的简称,是一门在XML文档中查找元素信息的语言
 
XML:一种标记语言,用于数据的存储的传递
 
XPath定位策略
注意:使用XPath策略,需要在浏览器工具中根据策略语法,验证成功后再放入代码中使用
1、路径-定位
2、利用元素属性-定位
3、属性与逻辑-定位
4、层级与属性结合
 
无论使用哪一种XPath策略,定位方法都是同一个,不同策略只决定方法的参数的写法
 
   方法:find_element_by_xpath("XPath策略")                
 
路径预习:
 
绝对路径:最外层元素到指定元素之间所有经过元素层级的路径
 以/html,使用/来分割元素层级
 
对页面结构要求比较严格,不建议使用
 
相对路径:匹配任意层级的元素,不限制元素的位置
 
1、相对路径以//开始
2、格式 //input  或者 // *
 
 使用开发者工具XPath快速定位元素:
 
1、目标元素上鼠标邮件——检查
2、元素对应代码上鼠标邮件——copy
3、copy XPath     copy full  XPath
 
注意:使用相对路径时,要注意方法参数的内外引号嵌套问题
 
 
xpath 利用元素属性-定位
说明:通过元素的属性信息来定位元素
 
语法1: //标签名[@属性名 = "属性值"]            //input[@id = "username"]   
语法2: //*[@属性名= "属性值"]                     //*[@id = "username"]
 
 
注意事项:1、目标元素的有些属性和属性值,可能存在多个相同特征的元素,需要注意唯一性
                  2、与class_name 方法不同的是,如果使用具有多个值的class属性,则需要传入全部的属性值
 
xpath 利用属性与逻辑结合
 
说明:解决元素之间个相同属性重名问题
格式://*[@属性1= '属性值1' and @属性2 = '属性值2']                          //*[@name = 'tel' and @class = 'tel']
 
 
xpath 利用层级与属性结合
 
如果通过元素自身的信息不方便直接定位到该元素,则可以先定位到父元素,然后再找到该元素
 
格式 : 父层级定位策略 / 目标元素定位策略
 
XPath延伸:
 
    //*[text()  = ""]                  通过文本信息来定位元素(要求全部文本内容)

    //*[contains(@attribute,"xxx")]       属性中含有xxx 的元素
 
    //*[starts-with(@atttibut,"xxx")]        属性以xxx 开头的元素
 
 
 
 
 
 
 
 
 
 
 
 
 

web自动化03-xpath定位的更多相关文章

  1. selenium自动化之xpath定位*必会技能*

    相信写过ui自动化,对xpath定位感觉会特别亲戚,那么下面给大家分享些我们常常在写脚本时易忽略的一些小细节和技巧.首先使用xpath定位时切忌 不要使用带有空格的属性 不要使用自动生成的id.cla ...

  2. web自动化之元素定位篇

    一.web自动化元素定位的方式有8种.------腾讯课堂 1.1 id定位: 1.2 class定位: 1.3 classname定位 1.4 tag_name 1.5

  3. selenium+python自动化之xpath定位

    在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. 什么是 ...

  4. web自动化:元素定位(二)

    一. 实例 如何定位到下图第二个"抢投标",有一种方法是利用xpath定位 //a[@href="/loan/loan_detail/Id/7190.html" ...

  5. 【WEB自动化】【第一节】【Xpath和CSS元素定位】

    目前自动化测试开始投入WEB测试,使用RF及其selenium库,模拟对WEB页面进行操作,此过程中首先面对的问题就是对WEB页面元素的定位,几乎所有的关键字都需要传入特定的WEB页面元素,因此掌握常 ...

  6. Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)

    概述 前面的一篇博文粗略介绍了基于lazyUI的第一个demo,本文将详细描述此工具的设计和使用. 元素获取插件:LazyUI Elements Extractor,作为Chrome插件,用于抓取页面 ...

  7. 【Selenium01篇】python+selenium实现Web自动化:搭建环境,Selenium原理,定位元素以及浏览器常规操作!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 二.话不多说,直接开干,开始搭建自动化测试环境 这里以前在 ...

  8. Web自动化必会知识:「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」

    1.web 基础-html.dom 对象.js 基本语法 Dom 对象里面涉及元素定位以及对元素的修改.因为对元素操作当中涉及的一些 js 操作,js 基本语法要会用.得要掌握前端的基本用法.为什么要 ...

  9. 【WEB自动化测试之控件定位】基于HTML5控件的唯一控件属性定位

      一.WEB控件定位是什么 要想弄懂这个问题,我们还是基于实践来学习.我们先来看一条入门级别自动化测试用例的构成. DemoCase:正确用户名和密码登录博客园,登录成功 URL: https:// ...

  10. 【python+selenium的web自动化】- 8种元素定位方式详解

    ​ 我们在做WEB自动化时,最根本的就是操作页面上的各种元素,而操作的基础便是元素的定位,只有准确地定位到唯一元素才能进行后续的自动化控制,下面将对各种元素定位方式进行总结归纳. ​ 说明:以下操作统 ...

随机推荐

  1. 标准C语言32个关键字

    数据类型相关:     内建类型:         char  short  int  long  void  float  double     7     自建类型:         struct ...

  2. LeetcodePractice-数组

    目录 88. 合并两个有序数组 思路解析 字节&1. 两数之和 思路解析 腾讯&15. 三数之和 思路解析 18. 四数之和 思路解析 解释下,tmpSum为什么用int不行,需要用i ...

  3. Mybatisplus----DML编程---多记录操作

    批量处理数据: @Test void testDelete(){ //批量按id删除 List<Long> list = new ArrayList<>(); list.add ...

  4. 2020寒假学习笔记13------Python基础语法学习(二)

    同一运算符   同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址. 运算符 描述 is is 是判断两个标识符是不是引用同一个对象 is not is  not 是判断两个标识符是不是引用 ...

  5. 常用Linux系统命令、vim编辑命令汇总(看一遍用时候来查)

    基本操作 pwd命令 作用:显示当前工作目录 用法:pwd cd命令 作用:改变目录位置 用法:cd [option] [dir] cd 目录路径 -进入指定目录 cd .. -返回父目录 cd / ...

  6. 机器学习08DAY

    线性回归 波士顿房价预测案例 步骤 导入数据 数据分割 数据标准化 正规方程预测 梯度下降预测 # 导入模块 import pandas as pd # 导入数据 from sklearn.model ...

  7. ICMP隐蔽隧道攻击分析与检测(二)

    • ICMP协议流量特征分析 一.ASCII与HEX对照转换表 二.ICMP正常流量分析 经常使用的ping命令就是基于ICMP协议,Windows系统下ping默认传输的是:"abcdef ...

  8. 如何在Java中做基准测试?JMH使用初体验

    大家好,我是王有志,欢迎和我聊技术,聊漂泊在外的生活.快来加入我们的Java提桶跑路群:共同富裕的Java人. 最近公司在搞新项目,由于是实验性质,且不会直接面对客户的项目,这次的技术选型非常激进,如 ...

  9. [Windows/Linux]Linux下的正斜杠"/"和"\"的区别 [转载]

    执行某一条Linux命令时,遇到了此问题,甚为不解.[文由] 本篇属于全文转载自: Linux下的正斜杠"/"和""的区别 - 博客园 >>> ...

  10. 【LeetCode】232.使用栈模拟队列

    使用栈模拟队列 ​ 请你仅使用两个栈实现先入先出队列.队列应当支持一般队列支持的所有操作(push.pop.peek.empty):实现 MyQueue 类: void push(int x) 将元素 ...