selenium2 python自动化测试实战 最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重,为了减轻回归测试的工作量,所以考虑后台可以进行部分自动化测试. 之前一个项目使用robotframework进行回归测试,了解了python语言,所以这次就使用python2.7+selenium2进行自动化回归测试了. 配置环境 python2.7 运行工具pycharm2017 一.项目结构介…
有很多selenium的教程,你没有从头看,当你看的时候已经很难跟上作者的节奏了.现在,你有机会再从头学一次了.从今天开始,船长会从最基本的知识开始,和大家一起学selenium.能不能跟着一起就看大家了.我们是按照虫师的书<selenium2 python 自动化测试实战>写的,没错,我看了多少,就会在这里和大家分享多少.还是老规矩,不明白的可以留言,现在有五六个人加了我好友,船长也尽力给大家解决问题了.还有要谢谢@川小姐姐的赞赏,你是第一个真正赞赏的,哈哈,谢谢! 好今天我们来第一课,搭建…
unittest是展开自动化测试的基础——这个框架很重要! 我们先自己写一个测试类: 1.被测试类 Widthget.py: # coding: utf-8 class Widthget:    def __init__(self, size=(10, 10)):        self._size = size    def getSize(self):        return self._size        def reSize(self, width, height):      …
本人在网上查找了很多做自动化的教程和实例,偶然的一个机会接触到了selenium,觉得非常好用.后来就在网上查阅各种selenium的教程,但是网上的东西真的是太多了,以至于很多东西参考完后无法系统的学习和应用,有一次在网上随意搜索,找到了-虫师-写的<Selenium2自动化测试实战基于Python语言>,觉得真心不错,内容也很调理,为了方便自己学习和知识的整理,就把其中虫师编写的自动化项目教程整理一下,有兴趣的可以去参看虫师的博客http://www.cnblogs.com/fnng/ 以…
(一)Selenium IDE Firefox的一个插件,有助于我们理解测试框架.在附加组件里搜索下载,一般搜的结果里前几个都不是,得点那个查看更多才行,找到这个: 安装以后浏览器工具栏会有: 安装好了以后点击这个标签启动: 1:控制用例运行速度 2:暂停和恢复用例执行 3:单步:可以运行一个用例中的一行命令. 先在地址栏输入要录制的url,然后在浏览器进入相应的url,比如我们以百度为例: 第一步:填入url 第二步:火狐浏览器进入百度 第三步: 点击Selenium IDE右侧那个红点,然后…
webdriver 提供错误截图函数 get_screenshot_as_file(),可以帮助我们跟踪 bug,在脚本无法继续执行时候, get_screenshot_as_file()函数将截取当前页面的截图保存到指定的位置 # coding: utf-8 from selenium import webdriverfrom time import sleep d = webdriver.Firefox() d.get("https://www.baidu.com") sleep(…
之前我们已经学过利用cookies跳过验证码登录了,那时候我们用的方法是add_cookie()方法,这里再给大家介绍两个,一般情况下我们用不到,了解一下就可以,而且如果真的用到的时候百度也很快的: # coding: utf-8 from selenium import webdriverfrom time import sleep d = webdriver.Firefox() d.get("https://www.yiyao.cc")# 看一下登录前的cookieprint d.…
定位一组对象 定位一组对象——find_elements_by_...(),注意,这里是elements,复数.返回的结果是一个列表,我们取值的时候就要用列表取值的方式来获得自己想要的元素.需要注意的就这么多.看一段代码立刻明白: 这是百度右上角的几个标签.我们看到,从“新闻”到“学术”的class是相同的: # coding: utf-8from selenium import webdriver driver = webdriver.Firefox() driver.get("http://…
鼠标事件包含在ActionChains类中,导入时只需要: from selenium.webdriver.common.action_chains import ActionChains 导入类即可: 常用的方法有: context_click()  ——右键单击 double_click()  ——双击 drag_and_drop(鼠标按下的元素,鼠标释放的元素)  ——拖动 move_to_element()  ——鼠标悬停在一个元素上 click_and_hold()  ——按下鼠标左键…
浏览器操作 # coding: utf-8 from selenium import webdriver from time import sleep driver = webdriver.Firefox() driver.get("https://www.baidu.com") # 设置浏览器宽800,高400 driver.set_window_size(800, 400) sleep(3) # 最大化窗口 driver.maximize_window() driver.get(&…
线性测试 已经被淘汰了:线性测试就是一个脚本完成一个场景,代码基本没有复用,每一个脚本都要从头开始写——这哪行. 模块化与类库 这个就是分模块:有点类似面系那个对象,把功能(比如登录)单独拿出来,当下次用到这个功能的时候只需要调用(登录)模块即可. 提高开发效率 方便代码维护 数据驱动 数据与脚本分离——参数化. 关键字驱动 看过我的robot Framework了吧,那个就是关键字驱动,“关键字”其实就是把函数封装成关键字,用的时候直接把这个封装好的关键字拿过来用就OK了.其实和数据驱动差不多…
看代码: # coding=utf-8 from time import sleepfrom selenium import webdriver driver = webdriver.Firefox() driver.maximize_window() driver.implicitly_wait(6) driver.get("https://tieba.baidu.com/index.html") sleep(1)# 用目标元素参考去拖动target_elem = driver.fi…
js修改readonly属性 我们看到这里日期框标签中有readonly属性,如果我们直接send_keys就无法输入内容,这时我们需要先去掉readonly属性: js ='document.getElementById("train_start_date").removeAttribute("readonly")'driver.execute_script(js) 然后可能需要清空一下文本框,然后用send_keys填入我们想填的内容即可,或者继续用js写入:…
说下载文件之前,我再和大家说一下用cookie登录的事,既然我们用cookie登录,那么传过去的cookie肯定是要和对应的网站完全一致的,注意,是包括大小写哦,本来我也是不知道,我用这个方法登录自己公司的网站,fiddler抓包和代码如下: # coding: utf-8 from selenium import webdriverfrom time import sleep driver = webdriver.Firefox() driver.get("https://www.yiyao.…
看代码: # coding: utf-8 from selenium import webdriver from time import sleep driver = webdriver.Firefox() driver.get("https://www.cnblogs.com") driver.add_cookie({'name': '.CNBlogsCookie', 'value': 'F956F323DFA5C31BE489C0730C7D891', 'domain': '.cn…
微信公众号搜索“自动化测试实战”或扫描下方二维码添加关注~~~…
先和大家说一下selenium环境的问题,大家可以在cmd里先看一下自己的selenium版本: 回车,就可以安装了. 本来想和大家说如何跳过验证码进行登录的,结果好多朋友加我问我环境配置的问题,所以觉得还是和大家详细的说明一下,我也自己做一下记录.大家可以提前看一下跳过验证码登录的问题.大家需要下载fiddler,一个很好用的工具,如果你在做手机App测试,应该很了解fiddler,因为需要用fiddler配置手机代理. 微信公众号搜索“自动化测试实战”或扫描下方二维码添加关注~~~…
# coding: utf-8 from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsfrom time import sleep # 去掉"Chrome正受到自动测试软件的控制."options = webdriver.ChromeOptions() options.add_argument('disable-infobars') driver = w…
有时候我们点击按钮后页面会跳转到新的窗口,我们需要到新的窗口中去进行接下来的操作,这时候就需要切换窗口的操作,我们根据句柄(handle)来操作窗口之间的切换,看代码: # coding: utf-8from selenium import webdriverfrom time import sleep driver = webdriver.Firefox() driver.get("http://www.jrj.com.cn/") driver.find_element_by_xpa…
我们来看一段最早的代码: # coding: utf-8 from selenium import webdriverfrom time import sleep driver = webdriver.Firefox() driver.get("http://blog.hexun.com/") driver.find_element_by_id("read_btn").click() driver.maximize_window() sleep(3)driver.f…
打印信息经常用的有两个: # coding: utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.get("http://www.baidu.com")# 打印网页标题title = driver.titleprint title# 打印当前urlcurr = driver.current_urlprint curr 打印显示为: 我们打印这些东西不是为了给自己看,而是为了做断言用,我们知道,…
键盘事件,就是键盘上的一些操作,比如Ctrl +C,Ctrl+V,Ctrl+X等. 对键盘的操作需要导入另一个键盘的库: from selenium.webdriver.common.keys import Keys 举个例子,你要在搜索框输入“自动化测试”,但是现在又想搜“自动化测”,就是删掉一个字,我们知道,就是摁一下键盘上的Backspace键就可以了,这时候你就需要键盘操作了: driver.find_element_by_xpath("xpath的定位").send_keys…
上一节我们说了如何定位元素,定位到元素以后就涉及到对元素的操作了,webdriver中常用的操作元素的方法有: clear  ——用于清除输入框的默认内容 send_keys  ——用于在一个输入框里输入内容 click  ——用于单点击一个按钮 此外,很多时候我们是要查看返回值的,常用的方法有: size  ——返回元素的尺寸用法: driver.find_element_by_id("定位的id").size text  ——获取元素的文本用法: driver.find_eleme…
自动化测试,一个现在被炒的火热的词:各大公司都在嚷嚷着要上自动化测试的项目,都在招聘各种自动化测试人员…非常荣幸的受作者邀请来帮忙写这个序,诚惶诚恐,何德何能?不记得何时开始认识的作者了.当初只是作为一个自学者混迹于各个技术群中,后来发现几乎每个群里每天充斥着大量的垃圾信息,QQ 不停的闪动,看吧?!都是无用的信息,不看吧?!却又怕错过些什么.后来自己着手建立了一个群,期望能按着自己的想法来建立一个平台,就有了后来的相识吧.作者,是一个勤奋,主动积极,乐于实践钻研的人,所以,就有了这本书的存在:…
UnitTest是展开自动化测试的基础——这个框架很重要!首先我们先自己写一个测试类: 1.被测试类 Widthget.py: # coding: utf-8class Widthget: def __init__(self, size=(10, 10)): self._size = size def getSize(self): return self._size def reSize(self, width, height): if width < 0 or height < 0: rai…
java 版来了!! 本文档在<selenium2 Python 自动化测试实战>的基础上,将代码与实例替换为java ,当然,部分章节有变更.这主要更语言本身的特点有关.集合和java下两大主流单元测试框架Junit4 和 TestNG.如何通过sikuli帮助我们识别和定位元素. 自从出了Python 版的Selenium自动化测试以来,一直有同学不断询问有没有Java版的. 其实,关于Selenium的讲解,Java版的资料是最多的.目前市面的Selenium书,大多例子也是用的Java…
引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用例时测试数据如何管理和加载.针对测试用例加载以及执行控制,python语言提供了unittest单元测试框架,将测试用例编写在unittest框架下,使用该框架可以单个或者批量加载互不影响的用例执行及更灵活的执行控制,对于更好的进行测试数据的管理和加载,这里我们引入数据驱动的模块:ddt,测试数据和…
引入 unittest 框架 相想使用unittest 框架,首先要引入unittest 包 import unittest class Baidu(unittest.TestCase): Baidu 类继承 unittest.TestCase 类,从TestCase 类继承是告诉unittest 模块的方式,这是一个测试案例. def setUp(self): self.driver = webdriver.Firefox() self.base_url = "http://www.baidu…
一.unittest单元测试框架 1.认识单元测试 1.断言方法 #计算器类 #coding:utf-8 #计算器类 class Count: def __init__(self,a,b): self.a=a self.b=b #计算加法 def sum(self): return self.a+self.b 创建一个Count类用于两个整数计算,通过__init__()方法对两个数进行初始化,接着创建sum()方法返回两个数相加的结果 #test.py #coding:utf-8 from D…
前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest.       unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做“PyUnit”,是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java还有一个很好用的单元测试框架叫TestNG,本系列只学习Python,所以只需要unittest是Pytho…