Python Selenium自动化测试详解
文章平均质量分 70
使用Python语言操作Selenium(webdriver)进行UI自动化测试的一些技能、API详解、问题解决办法以及代码示例、以及自动化测试框架的搭建
huilan_same
没有走不通的路,只有想不通的人。
https://huilansame.github.io/
展开
-
我又把HTMLTestRunner改了一下,支持Python3,添加echarts统计饼图
之前用Bootstrap把HTMLTestRunner改的美观了一点,同时改成了中文的报告,但那个是基于Python2的,见这篇博文 selenium之 输出报告,对HTMLTestRunner进行样式调整后的示例。这次呢,博主又给它改成了Python3的版本,同时给它加上了一个用echarts实现的统计饼图。效果如下:但这个需要用到echarts的js文件,如下图:把echarts的js放到与报原创 2017-09-12 14:30:44 · 20527 阅读 · 29 评论 -
怎样从0开始搭建一个测试框架_11——支持方法
添加支持方法。比如加密、签名等。原创 2017-08-18 11:11:00 · 8487 阅读 · 6 评论 -
怎样从0开始搭建一个测试框架_10——数据生成器
怎样从0开始搭建一个测试框架_10 有时候接口或UI上传入的数据需要符合指定的格式,我们在参数化的过程中又不愿意在excel中一遍遍去构造这样的数据,这时我们可以加入生成器来为我们产生符合某些固定格式的数据。 这里我推荐一个挺有意思的库,Faker,能够为你产生各种假数据别忘了在ReadMe.md中添上你要用的库。在utils中创建一个generator.py,用来生成数据...原创 2017-08-18 11:10:36 · 6252 阅读 · 3 评论 -
怎样从0开始搭建一个测试框架_9——抽取器
用JMESPath库实现json格式响应的抽取器。可以通过简单的点分法获取指定数据,而不需要用正则。原创 2017-08-18 11:10:02 · 4895 阅读 · 6 评论 -
怎样从0开始搭建一个测试框架_8——断言
添加自定义断言。原创 2017-08-18 11:09:27 · 6553 阅读 · 5 评论 -
怎样从0开始搭建一个测试框架_7——接口
用requests库封装HTTPClient,用于http接口测试。其他接口寻找对应库。原创 2017-08-02 11:04:44 · 8980 阅读 · 9 评论 -
怎样从0开始搭建一个测试框架_6——PageObject
用PO思想对用例分层原创 2017-08-02 11:04:06 · 10419 阅读 · 26 评论 -
怎样从0开始搭建一个测试框架_5——邮件
用smtplib和email库封装发送邮件的类。原创 2017-08-02 11:03:28 · 7930 阅读 · 39 评论 -
怎样从0开始搭建一个测试框架_4——报告
用HTMLTestRunner生成HTML测试报告。原创 2017-08-02 10:49:29 · 9394 阅读 · 21 评论 -
怎样从0开始搭建一个测试框架_3——参数化
用xlrd读取excel,并用PY3的unittest的subTest功能实现参数化。PY2的话需要用unittest2库。原创 2017-08-02 10:48:48 · 11632 阅读 · 48 评论 -
怎样从0开始搭建一个测试框架_2——日志
封装logging库,写日志。原创 2017-08-02 10:47:43 · 14728 阅读 · 27 评论 -
怎样从0开始搭建一个测试框架_1——配置
用pyYaml来读取yaml文件格式的配置文件。原创 2017-08-02 10:47:06 · 30535 阅读 · 64 评论 -
怎样从0开始搭建一个测试框架_0——总章
此系列教程能让你从一个刚刚学会Python与Selenium,不知道下一步该怎么走的小白,到自己搭建测试框架,并在项目中应用哦。原创 2017-08-02 10:46:01 · 40734 阅读 · 16 评论 -
Python logging 模块
Python logging 模块 给大家剖析下Python的logging模块。logging模块是Python内置的一个强大易用的日志模块。简单到你只需要两行代码就能输出一些东西来:import logginglogging.warning('Hi, I print something.')输出:WARNING:root:Hi, I print something.当然,我们可不能满足于原创 2017-09-06 17:31:57 · 7721 阅读 · 1 评论 -
Python selenium —— 将你的自动化脚本打包成一个exe
写好了Python selenium脚本,到其他机器上运行,还得要在其他机器上也装一套Python的环境,尤其在你用了一些第三方库的时候,甚至还要顾及操作系统是32位还是64位,是不是很坑,如果能打成一个exe就好了,不论32位还是64位,只要拷过去,安装合适版本的浏览器就行了。今天博主就带你将你的py脚本打包成一个exe1. 环境首先准备下环境,一台32位虚拟机(64位的py2exe不允许将程原创 2016-12-15 15:17:28 · 34977 阅读 · 8 评论 -
selenium 学习网站
分享一些学习selenium的网站:文档Selenium Python BindingsSelenium DocumentationWebDriver Living Document网站axatrikxtechbeamershttp://www.softwaretestingstudio.com/http://www.software-testing-tutorials-automation.co原创 2016-10-28 15:08:55 · 9573 阅读 · 1 评论 -
Python必会的单元测试框架 —— unittest
用Python搭建自动化测试框架,我们需要组织用例以及测试执行,这里博主推荐Python的标准库——unittest。unittest是xUnit系列框架中的一员,如果你了解xUnit的其他成员,那你用unittest来应该是很轻松的,它们的工作方式都差不多。unittest核心工作原理unittest中最核心的四个概念是:test case, test suite, test runner, t原创 2016-10-27 12:52:37 · 178447 阅读 · 63 评论 -
[译]Selenium —— 怎样使用FireBug和FirePath
译自techbeamers,原文链接怎样使用FireBug和FirePath寻找定位器什么是XPATHXPath是用于在网页上唯一的识别元素的技术,它就像HTML元素的地址,比如check boxes、text或div等。在Selenium里,我们认为XPath是最值得信赖的定位器之一。关于XPath更多的内容,请阅读 W3School XPath教程 。什么是FireBug插件Firebug是F翻译 2016-10-25 10:02:48 · 9655 阅读 · 1 评论 -
[译]Selenium Webdriver - 下载、安装稳定版本
译自techbeamers,原文链接 Selenium Webdriver正在持续地改进它的特性。最近,在Selenium Webdriver 3.0的官方release版本之后,我们又看到一些它的beta版本。 原因在于这个产品正在经历一个根本性的转变。所以每个使用Selenium的自动化测试工程师都应该关注它新版本的改变。这就是我们写这篇文章的原因。在这里,我们向你提供最新的,最稳翻译 2016-10-24 14:26:10 · 25973 阅读 · 0 评论 -
Python selenium —— 教你在Windows上搭建Python+Selenium环境
发现很多人连环境都不会搭,虽然这个问题没有什么技术含量,但博主也决定写点东西给那些环境都不会搭建的小白。关于selenium是什么的问题博主实在是懒得解释,直接上环境,小白学习一般需要以下一些东西:浏览器(Firefox/Chrome/IE..)PythonSeleniumSelenium IDE(如果用Firefox)FireBug、FirePath(如果用Firefox)c原创 2016-10-21 23:31:38 · 39193 阅读 · 5 评论 -
Python selenium —— 用chrome的Mobile emulation模拟手机浏览器测试手机网页
很多人发现chrome有项功能,就是在开发者工具里能够模拟手机打开网页,便想能否用selenium对此进行自动化测试。答案当然是yes!今天博主便给大家分享下如何用chrome的MobileEmulation实现手机网页自动化测试。1. 第一种方法第一种方法是通过device name来确定我们要模拟的手机样式,示例代码如下:# -*- coding: utf-8 -*-from selenium原创 2016-10-19 09:05:01 · 23553 阅读 · 13 评论 -
Python selenium —— Webdriver Exception cheat sheet
之前整理了Python版webdriver的备忘单与xpath、css的备忘单,今天把Python webdriver的exception清单整理一下。Python Webdriver Exception Cheat Sheet上表大概罗列了Python Webdriver 中的Exception以及出现该问题的原因,具体的代码解析与代码示例博主改天再给大家分享。HTML版如下: 异常 描述原创 2016-10-14 13:06:42 · 3332 阅读 · 0 评论 -
Python selenium —— XPath and CSS cheat sheet
XPath、CSS定位速查表HTML版如下: 描述 Xpath CSS Path 直接子元素 //div/a div > a 子元素或后代元素 //div//a div a 以id定位 //div[@id=’idValue’]//a div#idValue a 以class定位 //div[@class=’classValue’]//a di原创 2016-10-13 15:04:42 · 4804 阅读 · 0 评论 -
Python selenium —— webdriver cheat sheet(webdriver备忘单)
最近在axatrikx上看到篇webdriver cheat sheet,不过是用Java作的,就想到可以整理个Python版的,便有了此篇博文。把webdriver中主要的方法、重点进行整理到一张表格中,方便随手查阅。Webdriver Cheat Sheet如果它对你有帮助,或者你有什么好的建议,请告诉我。pdf版本可在此下载 webdriver cheat sheet by 灰蓝 更多关于原创 2016-10-13 10:58:52 · 3603 阅读 · 2 评论 -
Python selenium —— 文件下载,不弹出窗口,直接下载到指定路径
今天谈谈文件下载吧,很多人不会处理弹出的文件下载框,其实跟上传类似,可以用autoit和win32api解决,方法类似,可以看博主之前的文章Python selenium —— 文件上传所有方法整理总结,今天这里博主主要想讲讲更漂亮的一种处理办法,那就是指定下载路径,不弹出弹框,直接下载到指定路径。今天主要分享Firefox和Chrome的设置方法。Firefox 文件下载对于Firefox,需要我原创 2016-10-11 17:24:15 · 43449 阅读 · 20 评论 -
自动化项目配置或用例文件格式推荐--yaml
写了好多关于selenium的文章,今天换个口味,推荐一个文件格式 – yaml,以及对应的Python库 – PyYaml。可以用之作为你自动化测试框架的配置文件或者用例文件。yaml是一种比xml和json更轻的文件格式,也更简单更强大,它可以通过缩进来表示结构,听着就和Python很配对不对?yaml的介绍不在这里赘述,感兴趣可以自行百度下,先说下它的基本语法,还是配合着PyYaml来:1.原创 2016-09-22 17:35:22 · 11461 阅读 · 3 评论 -
selenium自动化测试资源整理(含所有版本chrome、chromedriver、firefox下载链接)
今天把手头有的一些关于selenium测试的资源整理了一下,分享出来。1. 所有版本chrome下载是不是很难找到老版本的chrome?博主收集了几个下载chrome老版本的网站,其中哪个下载的是原版的就不得而知了。 http://www.slimjet.com/chrome/google-chrome-old-version.php http://google_chrome.en.d原创 2016-09-22 00:17:33 · 78735 阅读 · 13 评论 -
Python selenium —— 动态id、class怎么定位
今天再给大家分享一个定位不到元素的原因——动态id。没有打开新页面、没有alert、没有frame、加了等待时间,但是还是定位不到元素?很有可能是你要定位的元素的属性是动态的,即每次打开页面,这个元素的id或者class等元素属性是动态生成的。代码执行时,元素的属性已经与之前不同,用之前的属性值去定位自然是定位不到的,会抛出NoSuchElementException。那么,怎么判断元素属性是否是动原创 2016-09-20 11:36:15 · 29793 阅读 · 3 评论 -
Python selenium —— selenium与自动化测试成神之路
忽然想谈谈自动化的学习路径,因为发现很多人总是急于求成,不懂该如何学习。在群里总是会遇到很多人问低级问题,写了一个selenium脚本,却执行失败,跑到群里来问,大神,这里为什么会报错?很多都是明显的语法问题,一问方知,今天刚刚学selenium,之前也没有语法基础,没学过Java,没学过Python,就跑来搞selenium,想玩自动化。每当看到这样的同学,总是很想吐槽。今天博主也不是想要吐槽,只原创 2016-09-17 00:33:04 · 134579 阅读 · 39 评论 -
Python selenium —— 一定要会用selenium的等待,三种等待方式解读
发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性。很多人在群里问,这个下拉框定位不到、那个弹出框定位不到…各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待。殊不知,你的代码运行速度是什么量级的,而浏览器加载渲染速度又是什么量级的,就好比闪电侠和凹凸曼约好去打怪兽,然后闪电侠打完回来之后问凹凸曼你为啥还在穿鞋没出门?凹凸曼分分中内心一万只羊驼飞过,欺负哥原创 2016-09-15 00:17:50 · 102505 阅读 · 37 评论 -
Python selenium —— 父子、兄弟、相邻节点定位方式详解
今天跟大家分享下selenium中根据父子、兄弟、相邻节点定位的方法,很多人在实际应用中会遇到想定位的节点无法直接定位,需要通过附近节点来相对定位的问题,但从父节点定位子节点容易,从子节点定位父节点、定位一个节点的哥哥节点就一筹莫展了,别急,且看博主一步步讲解。1. 由父节点定位子节点最简单的肯定就是由父节点定位子节点了,我们有很多方法可以定位,下面上个例子:对以下代码:<html><body>原创 2016-09-14 21:50:30 · 90570 阅读 · 15 评论 -
selenium之 文件上传所有方法整理总结
文件上传是所有UI自动化测试都要面对的一个头疼问题,今天博主在这里给大家分享下自己处理文件上传的经验,希望能够帮助到广大被文件上传坑住的seleniumer。首先,我们要区分出上传按钮的种类,大体上可以分为两种,一种是input框,另外一种就比较复杂,通过js、flash等实现,标签非input我们分别对这两种进行分析:1.input标签众所周知,input标签是可以直接send_keys的,这里也原创 2016-09-05 13:43:35 · 58800 阅读 · 17 评论 -
selenium之 坑(StaleElementReferenceException: Message: Element not found in the cache...)
今天给大家分享一个selenium中经常会有人遇到的坑: selenium.common.exceptions.StaleElementReferenceException: Message: Element not found in the cache - perhaps the page has changed since it was looked up群里经常会有人问,“我循环去点击一原创 2016-09-04 14:29:26 · 25007 阅读 · 16 评论 -
selenium之 兼容所有浏览器滚动条滚动的js
很多人发现写的js操作滚动条的代码只能控制firefox的滚动条,而chrome则不吊你;好不容易chrome能动了,firefox又不理你了。简直是坑的一比。那有没有兼容firefox、chrome、IE的方法呢?当然是有的,博主今天就给大家分享几种兼容以上三种浏览器的js写法:$(window).scrollTop(300);$(document).scrollTop(300)$("html原创 2016-08-31 17:27:54 · 7323 阅读 · 0 评论 -
selenium之 富文本框和editor编辑器的处理
在群里经常会遇到有人问文本框的处理,今天有时间,便写一点这方面的经验。一般输入框有三种:短的input框,如下:<input id="zenInput2" class="zenInputDemo" type="text" style="position: static;">textarea框,如下:<textarea id="message1" name="message1"></textarea原创 2016-08-31 16:22:51 · 9882 阅读 · 3 评论 -
selenium之 时间日期控件的处理
很多人问时间日期的空间怎么处理,但是时间日期控件各种各样,你可能遇到正常点的像这样: 当然也可能遇到难点的,像这样: 当然,也不排除会遇到变态的,像这样: 呵呵,真要一个个想着怎么去选择,简直是非人类干的事!那么该怎么办?其实很简单,我们不去搞时间日期空间,我们把它当成一个普通的input框处理就好了!但是,很多此类型input框都是禁止手动输入的,怎么办?很简单,用js把禁止输入的reado原创 2016-08-31 15:13:59 · 38957 阅读 · 31 评论 -
简单分享一个轻量级自动化测试框架目录结构设计
很多人在做自动化测试的过程中会遇到一个瓶颈,就是能够写脚本,但是不知道怎么去组织代码,怎么搭建测试框架,今天博主就放点干货,分享一个轻量级的自动化测试框架的目录结构,如下图:分层如下:config层,放配置文件,把所有的项目相关的配置均放到这里,用Python支持较好的配置文件格式如ini或yaml等进行配置。实现配置与代码分离。data层,放数据文件,可以把所有的testcase的参数化相关的原创 2016-08-25 23:30:45 · 25872 阅读 · 12 评论 -
selenium之 chromedriver与chrome版本映射表(更新至v2.46)
更多关于python selenium的文章,请关注我的专栏:Python Selenium自动化测试详解看到网上基本没有最新的chromedriver与chrome的对应关系表,便兴起整理了一份如下,希望对大家有用: chromedriver版本 支持的Chrome版本 v2.37 v64-66 v2.36 v63-65 v2.3...原创 2016-07-13 11:40:54 · 408946 阅读 · 85 评论 -
selenium之 如何控制网页内嵌div中滚动条的滚动
很多人疑惑怎么用selenium控制网页div中滚动条的滚动,其实这个问题很简单,用JS很简单就可以实现。 示例HTML代码如下:<!DOCTYPE html><html><head><style type="text/css">div.scroll{background-color:#00FFFF;width:100px;height:100px;overflow:auto;原创 2016-08-05 17:40:59 · 18770 阅读 · 3 评论 -
selenium之 定位以及切换frame(iframe)
很多人在用selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,用firebug也可以看到,就是定位不到,这种情况很有可能是frame在搞鬼(原因之一,改天专门说说定位不到元素,可能的一些原因及处理办法)。frame标签有frameset、frame、iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe对selenium定位而原创 2016-08-13 17:34:04 · 197428 阅读 · 60 评论