学习目的:


  xpath定位是针对常规定位方法中,最有效的定位方式。

场景:


  页面元素的定位。  

正式步骤:


step1:常规属性

示例UI

示例UI相关HTML代码

相关代码示例:

#通过id定位
dr.find_element_by_xpath('//*[@id="loginform-username"]').click()
#通过tag标签定位
#*号可以匹配任何标签
dr.find_element_by_xpath('//*[@id="loginform-username"]').click()
#指定标签名称
dr.find_element_by_xpath('//input[@id="loginform-username"]').click()
#通过class定位
dr.find_element_by_xpath('//*[@class="form-control"]').click()
#通过name定位
dr.find_element_by_xpath('//*[@name="LoginForm[username]"]').click()

step2: 其他属性


#其他属性,就是本文中非id、name、class之外的一些页面定位的属性
dr.find_element_by_xpath('//*[text()="定位的页面文本"]')
#多个属性组合
dr.find_element_by_xpath('//*[@type="text" and @id="loginform-username"]')

step3: 层级关系


a.如果一个元素,它的属性不是很明显,无法直接定位到,这时候我们可以先找它老爸(父元素)
b.找到它老爸后,再找下个层级就能定位到了

HTML代码释义

解决方案

#通过爸爸节点定位
dr.find_element_by_xpath('//*[@class="form-group field-loginform-username required has-error"]/input').click()
#通过爷爷节点定位
dr.find_element_by_xpath('//*[@id="login-form"]/div[1]/div/input')

step4: 索引定位


Html代码演示

解决方案:

#xpath索引定位,索引初始值从1开始
dr.find_element_by_xpath('//select[@id="nr"]/option[1]').click()

step5: 模糊匹配


1.xpath还有一个非常强大的功能,模糊匹配
2.掌握了模糊匹配功能,基本上没有定位不到的
​3.比如我要定位百度页面的超链接“hao123”,在上一篇中讲过可以通过by_link,也可以通过by_partial_link,模糊匹配定位到。当然xpath也可以有同样的功能,并且更为强大。
#定位百度首页hao123
dr.find_element_by_xpath('//*[contains(text(),"hao123")]').click()
#模糊匹配某个属性,针对百度搜索框
dr.find_element_by_xpath('//*[contains(@id,"kw") and @class = "s_ipt"]').click()
#模糊匹配以什么开头
dr.find_element_by_xpath('//*[starts-with(@class,"s_ip")]').click()

难点分析:


  没有难点,就是要多用,活学活用。

学习总结:


  xpath控制了80%的页面定位解决方案

Python3 Selenium自动化web测试 ==> 第十节 WebDriver高级应用 -- xpath语法的更多相关文章

  1. Python3 Selenium自动化web测试 ==> 第七节 WebDriver高级应用 -- 浮动框中,单击选择某个关键字选项

    学习目的: 了解WebDriver的高级应用 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver from ...

  2. Python3 Selenium自动化web测试 ==> 第六节 WebDriver高级应用 -- 操作web页面的滚动条

    学习目的: 掌握页面元素定位以外的其他重要知识点. 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver fr ...

  3. Python3 Selenium自动化web测试 ==> 第五节 WebDriver高级应用 -- 使用JavaScript操作页面元素

    学习目的: 中级水平技术提升 在WebDriver脚本代码中执行JS代码,可以解决某些 .click()方法无法生效等问题 正式步骤: Python3代码如下 # -*- coding:utf-8 - ...

  4. Python3 Selenium自动化web测试 ==> 第十一节 WebDriver高级应用 -- 显示等待 + 二次封装

    学习目的: 掌握显示等待 掌握二次封装 正式步骤: step1:显示等待的代码示例 # -*- coding:utf-8 -*- from selenium import webdriver from ...

  5. Python3 Selenium自动化web测试 ==> 第三节 常用WebDriver API使用示例上(24个API)

    前置步骤: 安装selenium,chrome驱动,Python3.6 学习目的: 常见API的使用 涉及的API: step1: 访问一个网址 step2: 网页的前进和后退 step3: 刷新当前 ...

  6. Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest

    前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...

  7. Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 <上>

    前置步骤: 上一篇的Python单元测试框架unittest,我认为相当于功能测试测试用例设计中的用例模板,在自动化用例的设计过程中,可以封装一个模板,在新建用例的时候,把需要测试的步骤添加上去即可: ...

  8. Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert

    学习目的: 掌握页面常规元素的定位方法 场景: 网页正常的select元素下拉框常规方法和select专属方法 正式步骤: step1:常规思路select页面元素定位 处理HTML代码截图 # -* ...

  9. Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 -- iframe专题 <下>

    学习目的: 掌握iframe矿建的定位,因为前端的iframe框架页面元素信息,大多时候都会带有动态ID,无法重复定位. 场景: 1. iframe切换 查看iframe 切换iframe 多个ifr ...

随机推荐

  1. WPF绑定功能常用属性介绍

    1.Mode 绑定中数据流的方向(enum BindingMode) 目标属性指的是控件的属性 (1)TwoWay 更改源属性或目标属性时,会自动更新另一方.适用于可编辑窗体 例:TextBox (2 ...

  2. Node.js Websocket 区分不同的用户

    实现ws://serverIP:port/:param1/:param2 .通过param1,param2来管理不同的ws回话,以便实现群发和指定用户的消息推送 npm install ws --sa ...

  3. 图片转换成十六进制TXT文件

    最近学习了图片的转换,就学习了一下图片从二进制转换成十六进制,十六进制TXT文件转换成图片形式. using System; using System.Collections.Generic; usi ...

  4. 使用@ConfigurationProperties注解 提示 “Spring Boot Configuration Annotation Processor not found in classpath ”

    解决方案: 在 pom.xml 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> < ...

  5. Luogu P4082 [USACO17DEC]Push a Box 点双连通分量/圆方树

    (貌似有圆方树的做法,我写的是点双) 显然这道题就是直接搜索.定义状态为f[i][j][0~4]表示箱子在(i,j),人在某个方向推.然后问题就是怎么转向.我们发现如果要转向,必须是人走过一条不包括( ...

  6. [Javascript] Create an Image with JavaScript Using Fetch and URL.createObjectURL

    Most developers are familiar with using img tags and assigning the src inside of HTML. It is also po ...

  7. Python 15__屏幕抓取

  8. Centos7下Nexus3的安装和配置

    参考文档:https://help.sonatype.com/repomanager3 1.要使用nexus服务需要安装jdk和maven 1.1.jdk下载地址:https://www.oracle ...

  9. web批量下载文件到本地

    JavaWeb 文件下载功能 文件下载的实质就是文件拷贝,将文件从服务器端拷贝到浏览器端,所以文件下载需要IO技术将服务器端的文件读取到,然后写到response缓冲区中,然后再下载到个人客户端. 1 ...

  10. OSI七层协议模型

    OSI七层模型详解 TCP/IP协议 链接:https://www.nowcoder.com/questionTerminal/b2ccf60bbb13483b94b4bffe200b4f3c 来源: ...