话不多说,先附上练习的所有代码链接:
link.
文章目录
- 引言.什么是自动化测试?
- 一.selenium定义
- 二.使用selenium IDE录制脚本
- 三.元素的定位方式
-
- 1.id--->find_element_by_id()
- 2.name--->find_element_by_name()
- 3.class name--->find_element_by_class_name()
- 4.link text--->find_element_by_link_text()
- 5.partial link text--->find_element_by_partial_link_text()
- 6.tag name--->find_element_by_tag_name()
- 7.xpath--->find_element_by_xpath()
- 8.css selector--->find_element_by_css_selector()
- 四.操作测试对象
- 五.键盘事件
- 六.鼠标事件
- 七.打印信息
- 八.浏览器的操作
- 九.其它函数
引言.什么是自动化测试?
自动化测试,顾名思义就是利用一些工具或编程语言,通过录制或编程的方法,设定特定的测试场景,模拟用户业务使用项目的一个流程,以此自动寻找缺陷(自动寻找缺陷是有局限性的)。目前业内较为流行的商用自动化测试工具代表有 HP 公司的 Unified Function Testing 与 IBM 公司的 RFT ,开源自动化测试工具则以 Selenium、Jmeter、Appium 为代表。
Selenium,业内流行的开源Web自动化测试工具,直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括 IE、Firefox、 Chrome 等 。
自动化测试的优点是:能够快速回归、脚本重用,从而替代人的重复活动。回归测试阶段,可利用自动化测试工具进行,无须大量测试工程师手动重复执行测试用例,极大的提高了工作效率。
自动化测试的缺点是:它们只能检查一些比较主要的问题,如崩溃、死机,但是却无法发现新的错误(人具有主观能动性,机器肯定代替不了人)。另外,自动化测试编写测试脚本工作量也很大,有时候该工作量甚至超过了手动测试的时间。
自动化测试不仅仅运用在系统测试层面,在单元测试、集成测试阶段同样可以使用自动化测试方法进行测试。此章节所述自动化主要是指 UI 层面的自动化测试。
一.selenium定义
Selenium 是 ThroughtWorks 公司一个强大的开源 Web 功能测试工具系列,支持多平台、多浏览器、多语言去实现自动化测试,Selenium2 将浏览器原生的 API 封装成 WebDriver API ,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作浏览器一样。
支持多种开发语言:ruby,python,java,perl,c# 等,同时 Selenium 测试直接自动运行在浏览器中,就像真正的用户在手工操作一样。支持的浏览器包括 IE, Chrome , firefox 等。
Selenium 已经从之前的 1.0(RC) 进化到了现在的 Selenium2 ( Selenium1+ 现在WebDriver)。
Selenium IDE 也将支持 WebDriver API ,包括将录制生成的测试
用例导出为 WebDriver 所支持的各种编程语言( Ruby、Python、C# 和 Java)
Selenium 实际上不是一个测试工具,而是一个工具集,其主要由三个核心组件构成: SeleniumIDE、Selenium RC (Remote Control )及Selenium Grid.
- Selenium IDE: Selenium 开发测试脚本的集成开发环境,是 FireFox 的 一个插件,可以录制/回放用户的操作,生成测试用例(一个脚本),运行单个测试用例或测试用例集。
- Selenium Remote Control ( RC远端控制平台 ) :支持多种平台(Windows、Linux) 和多种浏览器(IE、FireFox、Opera、Safari), 可以用多种语言(Java, Ruby, Python, Perl, PHP,C#) 编写测试用例。Selenium 为这些语言提供了不同的 API 及开发库,便于自动编译环境集成,从而构建高效的自动化测试框架。
- Selenium Grid :允许 Selenium-RC 针对规模庞大的测试用例集或者需要在不同环境中运行的测试用例集进行扩展。这样,许多的测试集可以并行运行,从而提高测试效率(有点像多线程)。
Selenium 的历史:
- Selenium 自 2004 年诞生以来,经历了三个版本的变化: Selenium 1.,Selenium 2 及 Selenium 3。Selenium 2 又称为 WebDriver ,WebDriver 对浏览器的支持需要对应框架开发工程师做对应的开发,Selenium 必须操作真实浏览器,但是 WebDriver 可以用 HTML Unit Driver 来模拟浏览器,在内存中执行用例,更加轻便。
- Selenium 1 中测试工程师使用 Selenium IDE 录制开发对应的测试脚本
,但在 WebDriver 中,仅需引入对应的 API,即可利用 JAVA 或 Python 等语言开发工具进行测试脚本开发编写,因此 Selenium IDE 渐渐被放弃。
利用 Selenium 进行 Web 自动化测试时,可采用 Python 语言, Python 常用的开发平台为 PyCharm。PyCharm 是由 JetBrains 打造的一款 Python IDE,功能齐全,编译方便,目前软件测试行业应用其做 Python 脚本开发较多。
二.使用selenium IDE录制脚本
三.元素的定位方式
先引入一个简单的代码:
# coding = utf-8
from selenium import webdriver
import time
browser = webdriver.Firefox()
time.sleep(3)
browser.get("http://www.baidu.com")
time.sleep(3)
browser.find_element_by_id("kw").send_keys("selenium")
time.sleep(3)
browser.find_element_by_id("su").click()
browser.quit()
脚本解析:
-
coding = utf-8
可加可不加,开发人员喜欢加一下,防止乱码。 -
from selenium import webdriver
要想使用 selenium 的 webdriver 里的函数,首先要把 webdriver 包导进来 -
browser = webdriver.Firefox()
我们需要操控哪个浏览器呢?Chrome ,当然也可以换成 Ie 或 Firefox。browser 可以随便取,但后面要用它操纵各种函数执行。 -
browser.find_element_by_id(“kw”).send_keys(“selenium”)
一个控件有若干属性 id 、name、(也可以用其它方式定位),百度输入框的 id 叫 kw ,我要在输入框里输入 selenium 。 -
browser.find_element_by_id(“su”).click()
搜索的按钮的 id 叫 su ,我需要点一下按钮( click() )。 -
browser.quit()
退出并关闭窗口的每一个相关的驱动程序。 -
browser.close()
关闭当前窗口。
注意:close 方法关闭当前的浏览器窗口,quit 方法不仅关闭当前窗口,还会彻底的退出 webdriver ,释放与 driver server 之间的连接。所以简单来说 quit 是更加彻底的 close ,quit 会更好的释放资源。
元素的定位:
我们在做 WEB 自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素。工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素。那么我们怎么来定位他们呢?在学习元素定位之前,我们最好能懂一点 html 的知识。
查看页面元素:用谷歌浏览器打开百度首页,点击右上角>更多工具>开发者工具,就可以看到整个页面的 html 文档内容
点击框中左上角的箭头图标,移动鼠标到百度搜索框,就可以自动定位到