上一期介绍了自动化测试Python+Selenium框架的基本介绍,这期讲元素定位。

元素定位

1.WEB自动化时利器--浏览器自带开发者工具

几乎所有浏览器都自带前端调试工具,也就是我们说的开发者工具。

开发者工具包括元素(ELements)、控制台(Console)、源代码(Sources)、网络(Network)、性能(Performance)等页签,可以分别点击查看。

元素(Elements):用于查看或修改HTML元素的属性、CSS属性、监听事件、断点。

控制台(Console):控制台一般用于执行一次性代码,查看JavaScript对象,查看调试日志信息或异常信息。

源代码(Sources):该页面用于查看页面的HTML文件源代码、JavaScript源代码、CSS源代码,此外最重要的是可以调试JavaScript源代码,可以给JS代码添加断点等。

网络(Network):网络页面主要用于请求数据的查看,网络连接相关的信息。

这些页签开发同学用的多些,我们测试人员一般使用元素(Elements)和网络(Network)。

其中做web自动化要用到元素

(Elements)

这个模块的功能,接口或性能测试使用网络(Network)。

2.如何调出开发者工具

一般直接F12即可打开开发者工具。

以chrome浏览器为例,也可以通过菜单打开:工具--更多工具--开发者工具

打开后页面如下,切换到第一个元素(Elements)页签:

可以改变开发者工具的出现位置和方式,谷歌中默认是浏览器右侧:

如何查看web元素

做自动化要找一个某个元素,要查看元素有没有NAME或ID属性,在浏览器渲染后的页面是看不到的,此时可以通过开发者工具进行查看。

F12快捷键打开开发者工具,点击其左上角鼠标图标。点击后图标变蓝,此时移动鼠标到web界面的各个元素上,可以看到元素信息,及对应元素定义代码块。

找到目标元素后,点击鼠标,则完成元素选择,右侧展示当前选中鼠标的信息。

元素确定后,可以通过右键菜单,进行添加删除元素、编辑元素属性等操作:

也可以在当前前端文件中,进行元素查找匹配,鼠标定位到任意一行代码,按快捷键ctrl+f,在输入框中输入搜索字符串后回车,可以看到:总匹配个数,当前匹配元素。也可以上下键查看所有匹配项。

简单元素定位

所有的自动化工具要模拟用户操作,一般都要识别出用户在对哪个元素做什么操作

哪个元素即通常大家说的元素定位。我们需要告诉Selenium操作哪个元素,Selenium根据我们提供的信息到运行程序上进行元素匹配,匹配到即进行操作

WebDriver 提供了8大元素定位方式,我们先看前六种元素定位方式。

1.根据Id定位

假设要操作的Web元素定义如下:

这里有个属性是id="su",那么我们可以根据id进行元素定位:

element = driver.find_element_by_id("su")

2.根据Name定位

这里有个属性是name="wd",那么我们可以根据name进行元素定位:

element = driver.find_element_by_name("wd")

3.根据LinkText定位

超链接在web网站中很常见,通过它可以实现页面的跳转。

以百度搜索为例,通过开发者工具,看到如下超链接的创建语句:

我们看到超链接a标签即没有id也没有name属性,那么我们怎么找到它?

如果一个页面有多个超链接,那么至少从超链接文本上能够区分,如:

同样的,selenium中也根据link text进行超链接定位,要查找第一个超链接,把它的超链接文本作为参数传递给

find_element_by_link_text方法:

Link_element = driver.find_element_by_link_text("自动化专业现在吃香吗")

4.根据PartialLinkText定位

我们可以做超链接字符串的部分匹配:

Python(计算机程序设计语言)_百度百科

超链接字符串为:Python(计算机程序设计语言)_百度百科

部分匹配:在当前页面查找超链接字符串包含“_百度百科”的元素

ele = driver.find_element_by_partial_link_text("_百度百科")

ele.click()

5.根据class Name定位

每个元素在定义时有class属性,相当于把这个元素划归到某类中:

则可以根据类别名称进行定位:

ele = driver.find_element_by_class_name("s_ipt")

* 如果元素定义时class值中间带空格,相当于这个元素同时属于多个类别:

按照整个class的值定位会失败,可以根据某个类名定位:

ele = driver.find_element_by_class_name("s_ipt_wr")

6.根据tag Name定位

每个元素在HTML文件中,都有个标签名称,如input,div,form,span等

若元素没有id,name这些易于定义的属性,也可以根据标签名称input进行定位:

ele = driver.find_element_by_tag_name("input")

* 通常一个页面上同类型的标签会不止一个,需要进行过滤。

根据xpath进行元素定位

在前边的6种元素定位方式中,如果元素没有id或name,或者根据class名称tag名称无法准确定位到元素的话,就可以采用xpath进行元素定位。

XPath 是一门在 XML 文档中查找信息的语言。 它使用路径表达式在 XML 文档中进行内容查找。

1.Xml术语

节点在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的

如:

<?xml version="1.0" encoding="UTF-8"?>

Harry Potter

J K. Rowling

2005

29.99

其中有如下结点:

(文档节点)

J K. Rowling (元素节点)

(属性节点)

基本值是无父或无子的节点。

基本值的例子:

J K. Rowling

"en"

2.节点关系

节点之间可能是父子,兄弟,同胞,先辈或后代的关系。

Harry Potter

J K. Rowling

2005

29.99

Book节点是title、author等节点的父节点,同时,title、author是book的子节点。

Title、author、year、price之间是同胞关系。

Bookstore是title、author和book的先辈节点,同时bookstore的后辈节点是title、author和booke等节点。

3.xpath语法

XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者不 (steps) 来选取的。

<?xml version="1.0" encoding="UTF-8"?>

Harry Potter

29.99

Learning XML

39.95

4.选取节点

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。下面列出了最有用的路径表达式:

5.谓语

谓语用来查找某个特定的节点或者包含某个指定的值的节点。

谓语被嵌在方括号中。

在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

6.选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

find_element与find_elements方法的区别

自动化过程中,通过find_elemet_by_id方法进行元素定位时,有时操作不到目标元素。原因可能是由于页面代码开发时不够规范,不同的元素id相同。

针对这种情况,Selenium开发了两套find方法,如下:

find_element_by_id find_elements_by_id

find_element_by_name find_elements_by_name

find_element_by_tag_name find_elements_by_tag_name

find_element_by_xpath find_elements_by_xpath

等等

那么两套方法使用上有何区别:

若匹配到元素:

find_element返回第一个匹配WebElement元素

Find_elements返回列表,包括所有匹配元素

若匹配不到元素:

find_element报异常

Find_elements返回空列表

两套方法使用时根据实际情况选择。

如果确定当前一个元素定位方式到底匹配到几个元素呢?可以在chrome的开发者工具中直接做验证,获取使用火狐浏览器的插件进行验证都可以。

python自动化测试工具开发_Python+Selenium自动化测试教程连载(2)相关推荐

  1. python自动化验证部署_Python selenium自动化测试环境安装部署

    1. Windows系统下python环境搭建 1.1首先访问http://www.python.org/download/去下载最新的python版本.本人使用的是2.7的python版本 1.2安 ...

  2. python 黑客工具开发_python黑客软件的搜索结果-阿里云开发者社区

    带你读<Python科学计算(原书第2版)>之一:导论 计算机科学丛书点击查看第二章点击查看第三章Python科学计算(原书第2版)Python for Scientists, Secon ...

  3. python小工具开发_python音乐下载小工具源码(tkinter)

    [实例简介]入门级示例源码,搜狗音乐下载 [实例截图] [核心代码] import requests import re import tkinter #获取gethush def gethush(m ...

  4. python安全工具开发_Python安全工具开发实践 - 安全牛课堂 - 领先的信息安全在线教育平台...

    { "i18nChapterName": "章", "i18nUnitName": "节", "i18nLes ...

  5. python教程点击器_python+Selenium自动化测试——输入,点击操作

    这是我的第一个真正意思上的自动化脚本. 1.练习的测试用例为: 打开百度首页,搜索"胡歌",然后检索列表,有无"胡歌的新浪微博"这个链接 2.在写脚本之前,需要 ...

  6. python接口自动化测试框架实战从设计到开发_Python接口自动化测试框架实战 从设计到开发...

    第1章 课程介绍(不要错过) 本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用 本章重点讲解如何抓app\web的h ...

  7. python写界面输入测试脚本_python+Selenium自动化测试——输入,点击操作

    这是我的第一个真正意思上的自动化脚本. 1.练习的测试用例为: 打开百度首页,搜索"胡歌",然后检索列表,有无"胡歌的新浪微博"这个链接 2.在写脚本之前,需要 ...

  8. python接口自动化测试面试题_Python 接口自动化测试实战

    Python接口自动化测试实战 简介 本课程主要围绕Python相关库再服务端接口自动化测试中的应用展开介绍,重点讲解接口自动化基础.编写接口自动化脚本.框架原理.项目实战,此外还扩展介绍多用例管理与 ...

  9. gtest测试框架使用详解_python selenium自动化测试框架如何搭建使用?

    selenium是一个web自动化测试工具,本身向python提供编程接口,至于搭建使用的话,只需要安装一下selenium模块,并配置一下浏览器驱动就行,下面我简单介绍一下实现过程,感兴趣的朋友可以 ...

最新文章

  1. android测试点整理
  2. python绘制剖面图_干货!告诉你详细的剖面图绘图方法和步骤
  3. python从入门到精通怎么样-《Python编程从入门到精通》
  4. 基于stm32f427实现SVPWM控制永磁同步开环转动
  5. 微信小程序字符串与对象相互转换
  6. [译】Redux入门教程(一)
  7. Node.js「三」—— 创建静态 WEB 服务器
  8. Web服务软件工厂(WSSF)演练之三:创建服务契约和实现方法
  9. uniapp - 接入科大讯飞语音评测
  10. 活灵活现用Git-技巧篇
  11. html 下拉框设置提示语,为 Html 的 Select 加一个提示语和输入方法
  12. 四年级语文期中测试卷
  13. APK脱壳之—如何脱掉“梆梆加固”的保护壳
  14. AOSP ~ Logcat Chatty 行过期
  15. GMAC接口(1)——GMAC简介
  16. gcc报invalid operands of types ‘<unresolved overloaded function type>‘ and ‘int‘ to binary ‘operator<
  17. DIY自平衡车意外失去左腿后,小哥爆改假肢玩出了花,稚晖君:技术到内心都硬核...
  18. 从控制台输入两个英文字母,输出这两个英文字母之间的所有的字母(包含大小写)
  19. 杰理之升级复位可以选择软复位跳转和绝对地址跳转【篇】
  20. 3、jQuery插件之datetimepicker时间插件

热门文章

  1. webstorm 2017 2016 各个版本 激活破解大全 实测可用
  2. http android下载工具,安卓抓包工具httpcanary
  3. “我把技术负债玩成了俄罗斯方块,却永远赢不了!”
  4. 实地集团和广州移动发布首个独立组网5G全场景智能社区
  5. 一文搞定移动端适配!
  6. 涨知识!Google 黑客常用搜索语句一览 | 原力计划
  7. 比 TensorFlow Lite 快 15.6 倍!业界首个移动 GPU BNN 加速引擎 PhoneBit 开源
  8. 当勒索病毒盯上视频产业,UP主们该如何保护数据安全?
  9. 一文追溯 ETL 的发展历程
  10. 五个 SQL 查询性能测试题,只有 40% 及格率,你敢来挑战吗?| 原力计划