
Python+Selenium自动化测试从零到框架设计系列
Anthony_tester
这个作者很懒,什么都没留下…
展开
-
从零开始到设计Python+Selenium自动化测试框架-如何开始
如何开始学习web ui自动化测试?如何选择一门脚本语言?选择什么自动化测试工具? 本人已经做测试快5年,很惭愧,感觉积累不够,很多测试都不会,三年多功能测试,最近两年才开始接触和学习自动化测试。打算写一个系列文章,关于如何从零开始到会设计和组装一个简单的web ui自动化测试框架。把文章放到这里的目的,方便以后自己记不住,回过来看看,还有就是给一些想学习web自动化测试的朋友们一原创 2017-03-14 17:07:04 · 70532 阅读 · 43 评论 -
Python+Selenium基础篇之1-环境搭建
Python + Selenium 自动化环境搭建过程1. 所需组建1.1 Selenium for python1.2 Python1.3 Notepad++ 作为刚初学者,这里不建议使用Python IDE工具,选择一个功能强大的记事本编辑工具就好,例如Notepad++.等以后积累足够了,需要编写更多文件,或者后期简单框架设计,我们再来介绍和使用Pyc原创 2017-03-20 09:46:17 · 34635 阅读 · 9 评论 -
Python+Selenium基础篇之2-打开和关闭火狐浏览器
本节介绍如何初始化一个webdriver实例对象driver,然后打开和关闭firefox浏览器。要用selenium打开fiefox浏览器。首先需要去下载一个driver插件geckodriver.exe, 下载地址https://github.com/mozilla/geckodriver/releases,下载好这个exe文件后,把这个文件放到你的python安装目录下,例如:C:\Pyth原创 2017-03-20 17:26:46 · 37876 阅读 · 34 评论 -
Python+Selenium基础篇之3-打开和关闭IE/Chrome浏览器
前面文章介绍了,如何调用webdriver接口方法来打开和关闭Firefox浏览器,本文介绍如何打开IE和Chrome浏览器。web项目,需要做兼容性测试,最重要的是浏览器兼容性测试。如果只考虑windows平台,相信应该很多公司必须要测试IE、Firefox、Chrome这三大浏览器。所以webui 自动化测试,也需要在这三大浏览器上面运行和测试脚本。从前面文章,我们知道,要调用Firefox浏原创 2017-03-28 11:08:40 · 48772 阅读 · 48 评论 -
Python+Selenium基础篇之4-XPath的使用
开始写自动化脚本之前,我们先学习几个概念,在完全掌握了这几个概念之后,有助于我们快速上手,如何去编写自动化测试脚本。 元素,在这个教程系列,我们说的元素之网页元素(web element)。在网页上面的文本输入框,按钮,多选,单选,标签,和文字都叫元素,总之,凡是能在页面显示的对象都可以作为页面元素对象。 元素定位,有时候也叫Locator,一个HTML页面元素,可以用原创 2017-03-28 17:25:55 · 47233 阅读 · 29 评论 -
Python+Selenium基础篇之5-第一个完整的自动化测试脚本
前面文章,我们介绍了如何采用XPath表达式去定位网页元素,在掌握了如何抓取或者如何书写精确的XPath表达式后,我们可以开始写自己的第一个真正意义上的webui 自动化测试脚本,就相当于,你在学习Python,如何在控制台打印Hello,Python! 一样。 我们的测试用例是:打开百度首页,搜索Selenium,然后检查搜索列表,有没有Selenium这个官网链接选项。原创 2017-03-30 10:53:00 · 103665 阅读 · 69 评论 -
Python+Selenium练习篇之1-摘取网页上全部邮箱
前面已经介绍了Python+Selenium基础篇,通过前面几篇文章的介绍和练习,Selenium+Python的webUI自动化测试算是入门了。接下来,我计划写第二个系列:练习篇,通过一些练习,了解和掌握一些Selenium常用的接口或者方法。 练习场景:在某一个网页上有些字段是我们感兴趣的,我们希望摘取出来,进行其他操作。但是这些字段可能在一个网页的不同地方。例如,我们需要在关于原创 2017-03-30 13:42:38 · 24384 阅读 · 27 评论 -
Python+Selenium练习篇之2-利用ID定位元素
在前面一篇文章,我们介绍了如何摘取页面字段,通过正则进行匹配符合要求的字段。如果感觉有点困难,不能立马理解,没有关系。把字符串摘取放到第一篇,是因为自动化测试脚本,经常要利用字符串操作,字符串切割,查找,匹配等手段,得到新的字符串或字符串数组,然后根据新得到的字符串进行判断用例是否通过。 本篇介绍如何通过元素节点信息ID来定位该元素,使用id来定位元素虽然效率要高于XPath,但是实原创 2017-03-30 16:20:21 · 16860 阅读 · 16 评论 -
Python+Selenium练习篇之3-利用tag name定位元素
前一篇文章介绍了如何通过元素的id值来定位web元素,本文介绍如何通过tag name来定位元素。个人认为,通过tag name来定位还是有很大缺陷,定位不够精确。主要是tag name有很多重复的,造成了选择tag name来定位页面元素不准确,所以使用这个方法定位web元素的机会很少。 什么是tag name? 还是以百度首页搜索输入框,在火狐浏览器,右键,通过firepath,原创 2017-03-31 09:26:26 · 26759 阅读 · 0 评论 -
Python+Selenium练习篇之4-利用link text定位元素
本文介绍如何通过link text 来定位页面元素,我们打开网页,一些可以点击的链接跳转上面的文字,就是link text,用百度首页举例来看:在上面图中,这一排上面的文字都是link text,例如我们要通过“新闻”这个文本字段来定义这个跳转链接元素。脚本如下:# coding=utf-8from selenium import webdriverdriver原创 2017-03-31 12:52:58 · 36930 阅读 · 0 评论 -
Python+Selenium练习篇之5-利用partial link text定位元素
本文介绍如何通过partial link text来定位页面元素。看到这个,有点和前一篇文字link text有点类似。字面意思,确实和link text相类似,partial link text就是选择这个元素的link text中一部分字段。 还是用百度首页输入框下有一个添加首页“把百度设为主页”。相关脚本如下:# coding=utf-8from selenium原创 2017-03-31 13:33:39 · 17658 阅读 · 4 评论 -
Python+Selenium练习篇之6-利用class name定位元素
有时候,我们在用firepath(不会的请点这里)查看元素的XPath信息,发现没有可以用来定位的id信息,这个时候我们就需要考虑用其他的可用的来定位元素。本文介绍如何通过元素节点中class name的值来定位页面元素。还是以百度首页,搜索输入框定位举例:XPath截图相关脚本代码如下:# coding=utf-8from selenium import webdri原创 2017-03-31 16:41:10 · 19249 阅读 · 8 评论 -
Python+Selenium练习篇之7-利用name定位元素
本文介绍如何通过节点中name的值来定位这个web元素。还是来看百度首页搜索输入框,通过name的值来定位。相关脚本代码:# coding=utf-8from selenium import webdriverdriver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(6)dri原创 2017-03-31 16:52:25 · 10042 阅读 · 2 评论 -
Python+Selenium练习篇之8-利用css定位元素
前面介绍了,XPath, id , class , link text, partial link text, tag name, name 七大元素定位方法,本文介绍webdriver支持的最后一个方法:by_css。css和XPath类似,也需要掌握一些语法,才能写出正确的,完整的css选择表达式。相关w3c介绍,请点击这里。相关脚本代码如下:# coding=utf-8from原创 2017-03-31 17:00:46 · 15407 阅读 · 0 评论 -
Python+Selenium练习篇之9-清除文本方法
在前面的基础篇的最后一篇(点这里),我们用到了输入字符和点击按钮这样的操作。用send_keys()来输入字符串到文本输入框这样的页面元素,用click()来点击页面上支持点击的元素。有时候,我们需要清除一个文本输入框内的文字,然后重新输入新的字符串,那边清除这个方法如何实现呢。调用webdriever中clear()方法:相关代码如下,为了演示测试效果,我们运行完脚本,不关闭浏览器:原创 2017-03-31 17:13:51 · 28421 阅读 · 0 评论 -
Python+Selenium练习篇之10-刷新当前页面
本文介绍如何调用webdriver中刷新页面的方法。相关脚本代码如下:# coding=utf-8import timefrom selenium import webdriverdriver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(6)driver.get("https://ww原创 2017-03-31 17:30:57 · 57081 阅读 · 0 评论 -
Python+Selenium练习篇之11-浏览器上前进和后退操作
本文来介绍上如何,利用webdriver中的方法来演示浏览器中地址栏旁边的前进和后退功能。相关脚本代码如下:# coding=utf-8import timefrom selenium import webdriverdriver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(6)dri原创 2017-04-07 16:32:08 · 17892 阅读 · 5 评论 -
Python+Selenium练习篇之12-获取浏览器的版本号
本文介绍,如何通过webdriver方法获取浏览器的版本号。看起来这个功能很鸡肋,不管怎么说,还是学习下,特别是在发送自动化测试报告的时候,还是可以通过这个方法来告诉别人,执行过的脚本是通过什么浏览器,什么版本跑的吧。相关脚本代码如下:# coding=utf-8import timefrom selenium import webdriverdriver = webdriver原创 2017-04-07 17:11:40 · 14961 阅读 · 9 评论 -
Python+Selenium练习篇之13-获取当前页面的URL
本文介绍如何通过webdriver方法获取当前测试页面的URL。获取当前URL有什么用处呢,一般URL可以帮助我们判断跳转的页面是否正确,或者URL中部分字段可以作为我们自动化测试脚本期待结果的一部分。相关脚本代码如下:# coding=utf-8import timefrom selenium import webdriverdriver = webdriver.Chrome(原创 2017-04-07 17:18:44 · 58924 阅读 · 14 评论 -
Python+Selenium练习篇之14-获取当前页面的title
前面文章介绍了如何获取当前页面的URL的值,本文介绍如何获取当前页面的title,这个也可以作为测试结果的依据,通过得到的title和预期的值对比,可以支持我们判断页面跳转正确。相关脚本代码如下:# coding=utf-8import timefrom selenium import webdriverdriver = webdriver.Chrome()driver.max原创 2017-04-07 17:23:20 · 25231 阅读 · 4 评论 -
Python+Selenium练习篇之15-在浏览器中新开一个tab
本文介绍如selenium方法打开一个新的tab,我们知道在浏览器里,我们按住 ctrl+ t 就可以新打开一个tab。所以我们学习如何利用webdriver中send_key 的方法去触发ctrl+t的效果。我们利用火狐浏览器来演示。相关代码如下:主要是调用了keys模块下相关方法,可以通过这个方法,输入任何一个键盘上支持的字符或者快捷键。# coding=utf-8impor原创 2017-04-07 17:35:36 · 19613 阅读 · 38 评论 -
Python+Selenium练习篇之16-点击单选按钮-Radio Button
本文介绍如何利用selenium中的方法去操作单选按钮(Radio Button)。利用百度新闻页面两个单选按钮举例默认是选择新闻全文,我试试在两者之前来回点击。实际上,勾选一个单选按钮,也就是调用元素方法click()我们利用for语句遍历这两个单选按钮,依次点击他们。想过脚本代码如下:# coding=utf-8from selenium import we原创 2017-04-08 15:30:33 · 32806 阅读 · 19 评论 -
Python+Selenium练习篇之17-点击复选框-Checkbox
本文介绍Selenium中,如何操作复选 框-Checkbox,最终的方法还是click()。本来想还是继续采用for语句来把所有的复选框勾选一遍,例如这样的场景:注册一个网站勾选身份或者职业的时候,由于没有找到合适的demo网站。这里还是以百度举例,登录时,勾选下次自动登录.原创 2017-04-08 17:02:12 · 21906 阅读 · 9 评论 -
Python+Selenium练习篇之18-自定义浏览器窗口大小
本文来学习下如何通过Selenium方法,设置符合不同测试场景浏览器窗口大小。例如,你有一台机器,最大支持1366*768,你完全可以利用这个机器测试不同分辨率下的场景。相关测试脚本代码如下:# coding=utf-8import timefrom selenium import webdriverdriver = webdriver.Chrome()driver.maximi原创 2017-04-08 17:20:36 · 33852 阅读 · 5 评论 -
Python+Selenium练习篇之19-断言页面标题
本文介绍一个Selenium中页面title断言方法,这个在基础篇中第一个完整的脚本有提到过,这个补充一下。相关脚本代码如下:# coding=utf-8import timefrom selenium import webdriverdriver = webdriver.Chrome()driver.maximize_window()driver.get('https://w原创 2017-04-08 18:09:20 · 19974 阅读 · 5 评论 -
Python+Selenium练习篇之20-获取元素上面的文字
本文介绍如何通过Selenium方法来获取某一个元素的text属性值。在很多自动化测试脚本中,需要多次获取元素的text值,拿过来进行对比和匹配。例如,在一个登陆界面,如果不输入用户名和密码,直接点击登录,肯定会有相关错误提醒。这个错误,我们需要通过selenium抓取出来,和需求说明文档中的描述去进行匹配,如果匹配,测试成功,否则失败。原创 2017-04-10 12:44:53 · 52064 阅读 · 19 评论 -
Python+Selenium练习篇之21-验证控件是否被选中
前面文章我们了解了如何获取元素的text属性值,和判断元素是否显示在页面(is_displayed()方法),本文我们来学习下,判断一个控件是否被选中状态。还是以百度新闻举例:由于这个新闻全文是默认被选中状态,我们需要用脚本去判断是否被选中。相关代码如下:# coding=utf-8import timefrom selenium import webdrive原创 2017-04-10 17:12:12 · 17861 阅读 · 21 评论 -
Python+Selenium练习篇之22-获取页面元素大小
本文介绍如何通过Selenium方法去获取页面元素的大小。这个场景是可能在需要测试的,例如在前端测试过程中,需要去测试某一个控件是否和设计大小保持一致。这里用百度首页的“百度一下”这个按钮举例,打印出这个按钮的大小。相关脚本代码如下:# coding=utf-8import timefrom selenium import webdriverdriver = webdriver原创 2017-04-10 17:24:52 · 16738 阅读 · 6 评论 -
Python+Selenium练习篇之23-组合键-全选文字
本文开始介绍Selenium中Keys模块下的一些组合,或快捷键的使用。前面的一篇文章,介绍了如何新开一个tab,也是用到这块的知识。本文介绍全选当前页面文字,快捷键是 Ctrl+a,主要还是用send_keys()方法输入组合键,这里用百度首页举例。相关脚本代码如下:# coding=utf-8import timefrom selenium import webdriverf原创 2017-04-10 21:02:41 · 14833 阅读 · 9 评论 -
Python+Selenium练习篇之24-组合键-退格键删除文字
前面一篇文章介绍了,常规清除文本输入框字符的方法clear(), 本文介绍相关脚本代码如下,这里用百度首页搜索输入框举例:# coding=utf-8import timefrom selenium import webdriverfrom selenium.webdriver.common.keys import Keysdriver = webdriver.Chrome()原创 2017-04-10 21:11:58 · 12485 阅读 · 8 评论 -
Python+Selenium练习篇之25-鼠标右键
本文介绍如何使用Selenium中右键方法来操作网页元素。网页上有些元素是支持右键来触发新的菜单,这里找一个百度首页,百度logo的右键,查看图片动作来模拟这个场景。问题拆分:1. 打开百度首页,找到logo,右键鼠标2. 移动到菜单,查看图像,然后点击核心问题,如何右键操作,然后是如何选择查看图像这个菜单。在Selenium中,有一个ActionChains模块支持,右键,鼠标悬原创 2017-04-10 21:24:17 · 18188 阅读 · 16 评论 -
Python+Selenium练习篇之26-执行JavaScript
前面文章介绍了ActionChains下的鼠标悬停和右键操作,其实ActionChains还有其他方法,你可以 action = ActionChains,通过这,先初始化一个ActionChains实例对象,然后在action后面输入一个点号,查看支持哪些action方法。本文开始介绍如何执行JS脚本,会用两个例子说明。示例一,执行js脚本触发一个alert弹出框。相关脚本代码如下:原创 2017-04-11 12:09:12 · 16563 阅读 · 3 评论 -
Python+Selenium练习篇之27-多窗口之间切换
本文来介绍如何处理driver在多窗口之间切换,想一下这样的场景,在页面A点击一个连接,会触发在新Tab或者新窗口打开页面B,由于之前的driver实例对象在页面A,但是你接下来的脚本是操作页面B的元素,这样就造成了找不到元素的报错。本来介绍selenium中switch_to.window()方法来处理这个问题。测试场景:打开百度新闻(页面A),点击热点新闻中第一个新闻链接(一般是国家领导人原创 2017-04-11 20:30:18 · 24969 阅读 · 27 评论 -
Python+Selenium练习篇之28-处理iframe切换
本文介绍如何利用Selenium中方法,在不同iframe中切换。问题:有时候我们发现元素定位没问题,在测试回放的过程,发现就是找不到元素报错。由于没有找到合适的iframe网站,这里不好用代码举例,简单文字加图片来介绍。自己写了一个网页,利用iframe网页框架,把网页分成上下两个不同iframe控制的页面,把下面html代码保存到一个记事本,然后修改名称为iframe-demo.h原创 2017-04-11 22:03:07 · 17622 阅读 · 13 评论 -
Python+Selenium练习篇之29-处理Alert弹窗
本文来介绍如何通过Selenium方法去处理网页Alert弹窗,和处理iframe类似,都是通过switch_to方法。这里还是没有找到合适的alert弹窗网站,我们就自己创建一个吧,前面文章介绍了如何通过执行JS来增加一个弹窗。相关脚本代码如下:# coding=utf-8import timefrom selenium import webdriverdriver = web原创 2017-04-12 10:44:33 · 17969 阅读 · 12 评论 -
Python+Selenium练习篇之30-获取当前页面全部图片信息
本文来介绍下如何获取当前页面全部的图片信息,图片信息可能包括,图片名称,图片大小等。相关脚本代码如下:# coding=utf-8import timefrom selenium import webdriverdriver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(6)driver原创 2017-04-12 11:03:38 · 14319 阅读 · 6 评论 -
Python+Selenium练习篇之31-获取页面元素的href属性
本文来介绍如何通过Selenium获取页面元素的某一个属性。一个元素可能有多个属性,例如 class, id, name, text, href, vale等等。这里我们举例一个爬虫中经常需要处理的链接问题:找出当前页面所有的超链接。已百度首页为例,打印所有包含href的元素的链接。相关脚本代码如下:# coding=utf-8import timefrom selenium im原创 2017-04-12 11:11:51 · 59505 阅读 · 4 评论 -
Python+Selenium练习篇之32-如何截图并保存
本文介绍如何利用Selenium的方法进行截图,在测试过程中,是有必要截图,特别是遇到错误的时候进行截图。在selenium for python中主要有三个截图方法,我们挑选其中最常用的一种。get_screenshot_as_file()相关代码如下:# coding=utf-8import timefrom selenium import webdriverdr原创 2017-04-12 12:26:11 · 34006 阅读 · 14 评论 -
Python+Selenium中级篇之0-设计自动化测试框架的前提技能介绍
如果你从一开始就跟着看博客文章到这里,基础篇一共有5篇文章,练习篇有32篇文章,这37篇文章。如果你认真看过,并且手动去敲过每一篇的脚本代码,那边恭喜你,至少说你算真正会利用Python+Selenium编写自动化脚本了,你基本掌握了Selenium中webdriver的大部分常用的方法函数。有人说过,自动化测试大概可以分三个层次:1. 手工测试用例转换成自动化测试脚本的过程2. 能设计自原创 2017-04-12 12:44:12 · 12271 阅读 · 17 评论 -
Python+Selenium中级篇之1-Python IDE工具-PyCharm的安装和简单使用
从本文开始陆续介绍一些中级的技能,本篇文章介绍,在Python开发过程中,比较流行,很优秀的一款IDE工具-PyCharm,这里关于它的介绍就一句话,它就相当于Java开发中的Eclipse软件一样。有些人说,Eclipse上可以通过安装插件扩展来支持Python的代码编写,虽然可以这样,但是我强烈建议,你本来就是学习,为啥不选择一个符合大众的选择工具呢,不管你用没有用户Eclipse,在这里,你原创 2017-04-12 15:48:05 · 14883 阅读 · 4 评论