selenium2 python自动化测试实战 最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重,为了减轻回归测试的工作量,所以考虑后台可以进行部分自动化测试. 之前一个项目使用robotframework进行回归测试,了解了python语言,所以这次就使用python2.7+selenium2进行自动化回归测试了. 配置环境 python2.7 运行工具pycharm2017 一.项目结构介…
有很多selenium的教程,你没有从头看,当你看的时候已经很难跟上作者的节奏了.现在,你有机会再从头学一次了.从今天开始,船长会从最基本的知识开始,和大家一起学selenium.能不能跟着一起就看大家了.我们是按照虫师的书<selenium2 python 自动化测试实战>写的,没错,我看了多少,就会在这里和大家分享多少.还是老规矩,不明白的可以留言,现在有五六个人加了我好友,船长也尽力给大家解决问题了.还有要谢谢@川小姐姐的赞赏,你是第一个真正赞赏的,哈哈,谢谢! 好今天我们来第一课,搭建…
键盘事件,就是键盘上的一些操作,比如Ctrl +C,Ctrl+V,Ctrl+X等. 对键盘的操作需要导入另一个键盘的库: from selenium.webdriver.common.keys import Keys 举个例子,你要在搜索框输入“自动化测试”,但是现在又想搜“自动化测”,就是删掉一个字,我们知道,就是摁一下键盘上的Backspace键就可以了,这时候你就需要键盘操作了: driver.find_element_by_xpath("xpath的定位").send_keys…
鼠标事件包含在ActionChains类中,导入时只需要: from selenium.webdriver.common.action_chains import ActionChains 导入类即可: 常用的方法有: context_click()  ——右键单击 double_click()  ——双击 drag_and_drop(鼠标按下的元素,鼠标释放的元素)  ——拖动 move_to_element()  ——鼠标悬停在一个元素上 click_and_hold()  ——按下鼠标左键…
本人在网上查找了很多做自动化的教程和实例,偶然的一个机会接触到了selenium,觉得非常好用.后来就在网上查阅各种selenium的教程,但是网上的东西真的是太多了,以至于很多东西参考完后无法系统的学习和应用,有一次在网上随意搜索,找到了-虫师-写的<Selenium2自动化测试实战基于Python语言>,觉得真心不错,内容也很调理,为了方便自己学习和知识的整理,就把其中虫师编写的自动化项目教程整理一下,有兴趣的可以去参看虫师的博客http://www.cnblogs.com/fnng/ 以…
定位一组对象 定位一组对象——find_elements_by_...(),注意,这里是elements,复数.返回的结果是一个列表,我们取值的时候就要用列表取值的方式来获得自己想要的元素.需要注意的就这么多.看一段代码立刻明白: 这是百度右上角的几个标签.我们看到,从“新闻”到“学术”的class是相同的: # coding: utf-8from selenium import webdriver driver = webdriver.Firefox() driver.get("http://…
浏览器操作 # 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(&…
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 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(…
线性测试 已经被淘汰了:线性测试就是一个脚本完成一个场景,代码基本没有复用,每一个脚本都要从头开始写——这哪行. 模块化与类库 这个就是分模块:有点类似面系那个对象,把功能(比如登录)单独拿出来,当下次用到这个功能的时候只需要调用(登录)模块即可. 提高开发效率 方便代码维护 数据驱动 数据与脚本分离——参数化. 关键字驱动 看过我的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写入:…
之前我们已经学过利用cookies跳过验证码登录了,那时候我们用的方法是add_cookie()方法,这里再给大家介绍两个,一般情况下我们用不到,了解一下就可以,而且如果真的用到的时候百度也很快的: # coding: utf-8 from selenium import webdriverfrom time import sleep d = webdriver.Firefox() d.get("https://www.yiyao.cc")# 看一下登录前的cookieprint d.…
说下载文件之前,我再和大家说一下用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 打印显示为: 我们打印这些东西不是为了给自己看,而是为了做断言用,我们知道,…
上一节我们说了如何定位元素,定位到元素以后就涉及到对元素的操作了,webdriver中常用的操作元素的方法有: clear  ——用于清除输入框的默认内容 send_keys  ——用于在一个输入框里输入内容 click  ——用于单点击一个按钮 此外,很多时候我们是要查看返回值的,常用的方法有: size  ——返回元素的尺寸用法: driver.find_element_by_id("定位的id").size text  ——获取元素的文本用法: driver.find_eleme…
自动化测试,一个现在被炒的火热的词:各大公司都在嚷嚷着要上自动化测试的项目,都在招聘各种自动化测试人员…非常荣幸的受作者邀请来帮忙写这个序,诚惶诚恐,何德何能?不记得何时开始认识的作者了.当初只是作为一个自学者混迹于各个技术群中,后来发现几乎每个群里每天充斥着大量的垃圾信息,QQ 不停的闪动,看吧?!都是无用的信息,不看吧?!却又怕错过些什么.后来自己着手建立了一个群,期望能按着自己的想法来建立一个平台,就有了后来的相识吧.作者,是一个勤奋,主动积极,乐于实践钻研的人,所以,就有了这本书的存在:…
java 版来了!! 本文档在<selenium2 Python 自动化测试实战>的基础上,将代码与实例替换为java ,当然,部分章节有变更.这主要更语言本身的特点有关.集合和java下两大主流单元测试框架Junit4 和 TestNG.如何通过sikuli帮助我们识别和定位元素. 自从出了Python 版的Selenium自动化测试以来,一直有同学不断询问有没有Java版的. 其实,关于Selenium的讲解,Java版的资料是最多的.目前市面的Selenium书,大多例子也是用的Java…
作者有话说 笔者写这本书的初心是想通过自身经验分享一些在自动化测试领域中的实用技术,能够帮助那些正在从事自动化测试相关工作或者准备转型自动化测试的测试人员.任何一门技术涵盖的知识点都是非常广泛的,可能并不是一本书就能够写完并且讲解清楚.本书没有太多废话,书中内容基于实战型例子,任何读者对着本书中的示例都可以很快上手学习.书中实战教程设计思路属于一气呵成,从头到尾知识体系版块布局清晰,实操流程表述细致且接地气,可保证大部分读者在阅读本书时比较轻松.愉悦.并不会像市面上有些书籍内容知识点过于分散,操…
一.为什么会写这本书 1.系统梳理.可以加深自己对测试知识体系的系统梳理 2.名气.增加个人的名气,比如:面试时,可以很自豪的说,我是xxxx书的作者 3.利他.帮助有需要的学习者更系统.完备的学习和进阶 4.自我价值的实现.看到自己写的书,非常有成就感 5.写书分享符合笔者一直遵循的原则:坚持开源.拥抱开源精神 6.打破行业内的一些怪象.写一些真正实用.行业内未曾公开的测试技术 6.年迈之际,回想当年.感动自己,永远热泪盈眶 二.本书封面设计 一本好书,不仅内容要实用.丰富.当然,书外观的设计…
鼠标操作 现在的Web产品提供了丰富的鼠标交互方式,例如鼠标右击.双击.悬停.甚至是鼠标拖动等功能,在Webdriver中,将这些关于鼠标操作的方法封装在ActionChains类提供. 1.鼠标右击操作 from selenium import webdriver # 引入ActionChains类 from selenium.webdriver.common.action_chains import ActionChains from time import sleep driver=web…
1.Selenium2 的原理 第一篇分享简单介绍了基于Python开发的Selenium2的环境配置,这篇主要讲一下基本用法.首先讲一下Selenium2的基本原理.基本上知道了这个东西是怎么回事,我们就知道怎么去用它做自动化测试. 与Selenium和Selenium RC不同,Selenium2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样.其实刚…
driver.findElement(By.id("idInput")).sendKeys("哈哈"); driver.findElement(By.id("idInput")).sendKeys("哈哈"); 这句话的意思是在id=idInput的文本框输入数据:哈哈,没有回车的效果 sendKeys()方法模拟键盘输入向输入框里输入内容 sendKeys()方法可以模拟键盘输入 driver.findElement(By.…