![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
selenium+unittest+python
wangxh_haha
这个作者很懒,什么都没留下…
展开
-
重要记录:HtmlTestRunner.HTMLTestRunner,不加u报告生成出错的记录
重要记录:以下错误犯了好几次,浪费了好多排查时间,以此记录明示。HtmlTestRunner.HTMLTestRunner(stream=fp,title=u'自动化测试报告',description=u'用例执行情况:')title,description前一定要加u,否则不能生成测试报告,且会一直报错:UnicodeDecodeError: 'ascii' codec can't原创 2017-09-30 16:41:10 · 946 阅读 · 0 评论 -
第33节:unittest状饰器简介
初始化和清理每次用例均执行setUp和tearDown在每次执行case前后都执行了一次实例:可以看到,setUp tearDown在每个用例执行前后均执行了。初始化和清理只执行一次setUpClass() 与 tearDownClass()在所有case执行前,后,只运行一次初始化(即:setup中存放的内容) 和 清理(即:原创 2017-09-15 17:23:06 · 224 阅读 · 0 评论 -
第五节:浏览器的基本操作
控制浏览器窗口大小浏览器全屏显示:控制浏览器后退、前进WebDriver 也提供了对应的 back()和 forward()方法来模拟后退和前进按钮刷新页面截屏原创 2017-08-31 17:42:11 · 348 阅读 · 0 评论 -
第四节:元素定位方法
webdriver提供的find_element_by_*的八种元素定位方法:方法一:通过id定位语法:find_element_by_id() 举例:find_element_by_id("kw")方法二:通过name定位语法:find_element_by_name()举例:find_element_by_name("wd")方法三:通过class name定位原创 2017-08-31 17:20:53 · 1853 阅读 · 0 评论 -
第一节:环境搭建
第一步:安装PYTHON下载地址:http://www.python.org/ftp/python/2.7.5/python-2.7.5.msi 安装后并在PATH中设置PYTHON环境变量(说明:本例:PYTHON安装路径为:E:\Python27,path中增加E:\Python27;第二步:安装Python的SetupToolsSetupTools就是一个帮助原创 2017-08-17 10:09:49 · 275 阅读 · 0 评论 -
第二节:浏览器驱动(webdriver)记录
FireFox浏览器:firefox做为SELENIUM默认浏览器,可用不安装webdriver,在高版本,需安装Geckodriver 。本机安装的firefoxV46,未安装WEBDRIVER。selenium firefox 官方DRIVER: Geckodriver v0.18.0 适用于:Firefox 48版本以及以上 下载地址:https://github.com/moz原创 2017-08-31 10:07:17 · 305 阅读 · 0 评论 -
第三节:引入unittest框架
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom selenium.common.exceptions转载 2017-08-31 14:59:50 · 985 阅读 · 0 评论 -
第28节:webdriver截图
Webdriver 提供了截图函数 get_screenshot_as_file()来截取当前窗口。代码如下:本例中百度输入框的 id=kw1会定位不到元素,那么try就会捕捉到这个异常,从而执行except,在 except中执行 get_screenshot_as_file()对当前窗口进行截图,这里需要指定图片的保存路径及文件名,并且关闭当前驱动。原创 2017-09-07 17:01:45 · 278 阅读 · 0 评论 -
第31节:unittest基本介绍
转自:http://blog.csdn.net/huilan_same/article/details/52944782unittest是xUnit系列框架中的一员。unittest核心工作原理unittest中最核心的四个概念是:test case, test suite,test runner, test fixture。下面我们分别来解释这四个概念的意原创 2017-09-15 13:52:20 · 360 阅读 · 0 评论 -
第34节:unittest断言
unittest断言在测试用例中,执行完测试用例后,最后一步是判断测试结果是pass还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)基础断言:MethodChecks thatassertEqual(a, b)a == bassertNotEqual(a, b)a !原创 2017-09-18 10:26:16 · 457 阅读 · 0 评论 -
第35节 HtmlTestRunner测试报告
HTMLTestRunner 是 Python 标准库的 unittest 单元测试框架的一个扩展。它生成易于使用的 HTML 测试报告。 使用前提:1. 首先要下 载HTMLTestRunner.py 文件,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html2. HTMLTestRunner.py 本是一个.py 文件原创 2017-09-18 13:48:56 · 643 阅读 · 0 评论 -
第36节 创建定时任务
创建定时任务,使自动化测试脚本在指定的时间自动化运行 。方式一:通过程序创建定时任务思路是通过Python 的 os 模块中提供了 system()用来执行系统命令 比如我们要执行 E:\\test_object\\目录下的 all_test.py 文件,可以这样来实现: 或者:或者我们先切换到相应的目录,然后通过 Python 命令去执行 all_test.py 文件更符转载 2017-09-18 16:27:53 · 420 阅读 · 0 评论 -
第38节:python通过SMTP协议发送邮件失败,报错505或535或554
发送失败错误1:smtplib.SMTPAuthenticationError: (550, b'User has no permission') 我们使用python发送邮件时相当于自定义客户端根据用户名和密码登录,然后使用SMTP服务发送邮件,新注册的163邮箱是默认不开启客户端授权的,因此登录总是被拒绝,解决办法(以163邮箱为例):进入163邮箱-设置-客户端授权密码-转载 2017-09-20 10:02:52 · 8246 阅读 · 3 评论 -
第37节 自动发邮件总结及实例说明
python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用。smtplib模块主要负责发送邮件,email模块主要负责构造邮件。smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发转载 2017-09-20 10:27:12 · 1010 阅读 · 0 评论 -
第29节:参数化
参数化方式可通过txt,csv,xml.excel等第一种:txt参数化1.有一列值。本例:通过百度搜索不同值脚本:TXT文件如下:2.有两列值原创 2017-09-11 15:43:48 · 235 阅读 · 0 评论 -
第30节:查看selenium API
前言 前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有。 pydoc是Python自带的模块,主要用于从python模块中自动生成文档,这些文档可以基于文本呈现的、也可以生成WEB 页面的,还可以在服务器上以浏览器的方式呈现!转载 2017-09-11 16:05:35 · 249 阅读 · 0 评论 -
第七节:WebDriver的一些常用操作
-----------------------------WebDriver的一些常用操作-------------------------------------------driver.execute_script(script):同步执行JSdriver.execute_async_script(js) #异步执行JS脚本-----无实例driver.fo原创 2017-09-01 18:22:30 · 274 阅读 · 0 评论 -
第六节:元素常用方法
--------------------------------------------------页面元素的常用操作-------------------------------------------------------------------------submit():用于提交表单,这里特别用于没提交按钮的情况,例如搜索框输入关键字之后的“回车”操作 ,有些时候submit()原创 2017-09-01 16:13:57 · 280 阅读 · 0 评论 -
第27节:通过py2exe将自动化脚本打包成一个exe
写好了Python selenium脚本,到其他机器上运行,还得要在其他机器上也装一套Python的环境,尤其在你用了一些第三方库的时候,甚至还要顾及操作系统是32位还是64位,是不是很坑,如果能打成一个exe就好了,不论32位还是64位,只要拷过去,安装合适版本的浏览器就行了。今天博主就带你将你的py脚本打包成一个exe1. 环境首先准备下环境,一台32位虚拟机(64转载 2017-09-07 16:45:37 · 384 阅读 · 0 评论 -
第二十六节:动态id、class怎么定位
今天再给大家分享一个定位不到元素的原因——动态id。没有打开新页面、没有alert、没有frame、加了等待时间,但是还是定位不到元素?很有可能是你要定位的元素的属性是动态的,即每次打开页面,这个元素的id或者class等元素属性是动态生成的。代码执行时,元素的属性已经与之前不同,用之前的属性值去定位自然是定位不到的,会抛出NoSuchElementException。那么,怎么判转载 2017-09-07 15:55:07 · 1421 阅读 · 0 评论 -
第二十五节:父子、兄弟、相邻节点定位方式详解
今天跟大家分享下selenium中根据父子、兄弟、相邻节点定位的方法,很多人在实际应用中会遇到想定位的节点无法直接定位,需要通过附近节点来相对定位的问题。1. 由父节点定位子节点最简单的肯定就是由父节点定位子节点了,我们有很多方法可以定位,下面上个例子:对以下代码:html>body>div id="A"> div id="B">转载 2017-09-07 15:49:49 · 744 阅读 · 0 评论 -
第十二节:上传文件
对于 web 页面的上传功能一般会有以下几种方式。普通上传:普通的附件上传都是将本地文件的路径作为一个值放 input 标签中,通过form 表单提交的时候将这个值提交给服务器。插件上传:一般是指基于 Flash 与 JavaScript 或Ajax 等技术所实现的上传功能或插件。第一种:普通上传如果能找上传的 input 标签,那么基本都可以通转载 2017-09-06 14:19:54 · 243 阅读 · 0 评论 -
第十四节:单选框(radio)和复选框(checkbox)
网页上有时候遇到checkbox和radio,一般情况下这两种都是input标签,我们可以通过点击或者发送空格的方式进行选中实验网页代码:Checkbox:type="checkbox" value="cv1" name="c1">type="checkbox" value="cv2">type="checkbox" value="cv3" name="c1">type转载 2017-09-05 17:57:20 · 734 阅读 · 0 评论 -
第十三节:下拉选择框Select
selenium的下拉选择框。我们通常会遇到两种下拉框,一种使用的是html的标签select,另一种是使用input标签做的假下拉框。后者我们通常的处理方式与其他的元素类似,点击或使用JS等。而对于前者,selenium给了有力的支持,就是Select类。网页与源码截图如下:1.导入(import)你可以用以下方式导入:from sel转载 2017-09-05 17:44:35 · 1014 阅读 · 0 评论 -
第十二节 alert\confirm\prompt
不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert。先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决。alert\confirm\prompt弹出框操作主要方法有:text:获取文本值accept() :点击"确认"dismiss() :点击"取消"或者叉掉对话框send_keys() :输入文本值 --仅限转载 2017-09-05 14:32:56 · 336 阅读 · 0 评论 -
第十一节:多窗口切换
有时候需要在不同的窗口切换, 从而操作不同的窗口上的元素 。WebDriver 提供了 switch_to_window()方法可以切换到任意的窗口转载 2017-09-05 14:17:27 · 471 阅读 · 0 评论 -
第十节:定位以及切换frame(iframe)
在 web 应用中经常会遇到 frame嵌套页面的应用,而 WebDriver每次只能在一个页面上识别元素,对于 frame嵌套内的页面上的元素,直接定位是定位是定位不到的。frame标签有frameset、frame、iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe对selenium定位而言是一样的,selenium有转载 2017-09-04 18:54:28 · 3163 阅读 · 0 评论 -
第九章:定位一组元素
有时候一个页面上有多个对象需要操作,如果一个个去定位的话,比较繁琐,这时候就可以定位一组对象。webdriver 提供了定位一组元素的方法,跟前面八种定位方式其实一样,只是前面是单数,这里是复数形式:find_elements 实例一:find_elements_by_css_selector()一、定位搜索结果 1.在百度搜索框输入关键字转载 2017-09-04 18:40:45 · 977 阅读 · 0 评论 -
第八节:等待
转载:http://blog.csdn.net/huilan_same/article/details/52544521selenium+python的等待分为三种:第一种:强制等待从字面意思就可以理解,管找没找到元素,都得等待设置的时长语法为:time.sleep(3) 说明:使用前提:导入time包语句说明:等待3秒,不管浏览器是否加载完成,程序都得等待3秒,3秒一到转载 2017-09-04 15:04:47 · 497 阅读 · 0 评论 -
第十五节:调用JS
前言 selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了。常见场景:当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。滚动条是无法直接用定位工具来定位的。selenium里面也没有直接的方法去控制滚动条,这时候只能借助JS了,还好se转载 2017-09-06 15:32:13 · 201 阅读 · 0 评论 -
第十六节:加载Firefox配置
前言有小伙伴在用脚本启动浏览器时候发现原来下载的插件不见了,无法用firebug在打开的页面上继续定位页面元素,调试起来不方便 。加载浏览器配置,需要用FirefoxProfile(profile_directory)这个类来加载,profile_directory既为浏览器配置文件的路径地址 一、遇到问题1.在使用脚本打开浏览器时候,发现右上角原来下载的插转载 2017-09-06 15:34:33 · 388 阅读 · 0 评论 -
第二十四节:兼容所有浏览器滚动条滚动的js
很多人发现写的js操作滚动条的代码只能控制firefox的滚动条,而chrome则不吊你;好不容易chrome能动了,firefox又不理你了。简直是坑的一比。那有没有兼容firefox、chrome、IE的方法呢?当然是有的,博主今天就给大家分享几种兼容以上三种浏览器的js写法:$(window).scrollTop(300);$(document).scrollTop(3转载 2017-09-07 14:55:02 · 371 阅读 · 0 评论 -
第二十三节: selenium之 坑(StaleElementReferenceException: Message: Element not found in the cache...)
转载:http://blog.csdn.net/huilan_same/article/details/52432206今天给大家分享一个selenium中经常会有人遇到的坑:selenium.common.exceptions.StaleElementReferenceException: Message: Element not found in the cache - p转载 2017-09-07 14:48:13 · 323 阅读 · 0 评论 -
第22节:富文本框和editor编辑器的处理
一般输入框有三种:短的input框,如下:textarea框,如下:div式的editor框,如下: 也可能是更复杂的iframe的editor,如下: 下面依次看看这几种输入框该怎么解决:1. input其实这个只是列在这里,直接send_keys就行转载 2017-09-07 14:38:22 · 1001 阅读 · 0 评论 -
第21节:JS处理日期控件
日期控件-----把它当成一个普通的input框处理时,但很多时候,此类型input框都是禁止手动输入的。解决方法:用js把禁止输入的readonly属性干掉就好了.以下举例说明:测试地址:http://www.sucaijiayuan.com/api/demo.php?url=/demo/20141108-1/测试代码:输出2016-8原创 2017-09-07 14:19:41 · 303 阅读 · 0 评论 -
第二十节:文件上传所有方法整理总结
文件转载:http://blog.csdn.net/huilan_same/article/details/52439546首先,我们要区分出上传按钮的种类,大体上可以分为两种,一种是input框,另外一种标签非input(就比较复杂,通过js、flash等实现)我们分别对这两种进行分析:1.input标签众所周知,input标签是可以直接send_keys的,这里转载 2017-09-07 11:51:18 · 511 阅读 · 1 评论 -
第十九节:下载文件
今天谈谈文件下载吧,很多人不会处理弹出的文件下载框,其实跟上传类似,可以用autoit和win32api解决,方法类似。今天讲讲更漂亮的一种处理办法,那就是指定下载路径,不弹出弹框,直接下载到指定路径。今天主要分享Firefox和Chrome的设置方法。Firefox 文件下载对于Firefox,需要我们设置其Profile:browser.download转载 2017-09-07 10:13:24 · 203 阅读 · 0 评论 -
第32节:unittest--错误报告的详细程度
在unittest.main()中加 verbosity 参数可以控制输出的错误报告的详细程度,默认是 1以下分别对各参数值运行情况进行说明与展示。verbosity =0verbosity =1verbosity =2原创 2017-09-14 17:06:23 · 686 阅读 · 0 评论 -
第十七节:switch_to.active_element 获取当前焦点元素
转载:http://blog.csdn.net/huilan_same/article/details/52338073switch_to.active_element返回的是当前焦点的对象,即返回WebElement对象。那么焦点是什么?大概可以这样理解:即网页上当前操作的对象(也就是你网页上光标的位置),比如,你鼠标点击到了一个input框,你可以在转载 2017-09-06 15:59:35 · 841 阅读 · 0 评论 -
第一节补充 配置PYTHON编码格式
配置PYTHON编码格式:即:把 PyDev 的编码格式修改成 UTF-8,默认采用 GBK编码。不用再在头部声明程序的编码类型,即不用写# coding: utf-8;修 改 PyDev 编 码 格 式 , 在 Window-->Preference--->General->Editors->Text Editors->Spelling , Encoding 改 成Other原创 2017-08-17 14:15:38 · 153 阅读 · 0 评论