Selenium 2自动化测试实战33(带unittest的脚本分析)
带unittest的脚本分析
#test.py
#coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest,time,re class BaiduTest(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Chrome()
self.driver.implicitly_wait(30)
self.base_url="http://www.baidu.com"
self.verificationErrors=[]
self.accept_next_alert=True def test_baidu(self):
driver=self.driver
driver.get(self.base_url +"/")
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("selenium ide")
driver.find_element_by_id("su").click() def is_element_present(self,how,what):
try:
self.driver.find_element(by=how,vaule=what)
except NoSuchElementException,e:
return False
return True def is_alert_present(self):
try:
self.driver.switch_to_alert()
except NoAlertPresentException,e:
return False
return True def close_alert_and_get_its_text(self):
try:
alert=self.driver.switch_to_alert()
alert_text=alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally:
self.accept_next_alert=True def tearDown(self):
self.driver.quit()
self.assertEqual([],self.verificationErrors) if __name__=="__main__":
unittest.main()
代码分析如下:
Import unittest #首先引入unittest框架
Class BaiduTest(unittest.TestCase): BaiduTest类继承unitt框架的TestCase类成为标砖的测试类。
def setUp(self):
self.driver=webdriver.Chrome()
self.driver.implicitly_wait(30)
self.base_url="http://www.baidu.com"
self.verificationErrors=[]
self.accept_next_alert=True
1.-setUp用于设置初始化工作,在执行每一个测试用例前先被执行,它与tearDown方法相呼应,后者在每一个测试用例执行后被执行。这里的初始化工作定义了浏览器启动和基础URL地址。
2.implicitly_wait()设置页面上元素的隐性等待时间为30秒。
3.定义空的verificationErrors数组,脚本运行时的错误信息将被记录到这个数组中。
4.定义accept_next_alert变量,表示是否继续接受下一个警告,初始状态为True。
def test_baidu(self):
driver=self.driver
driver.get(self.base_url +"/")
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("selenium ide")
driver.find_element_by_id("su").click()
这里就是测试脚本
def is_element_present(self,how,what):
try:
self.driver.find_element(by=how,vaule=what)
except NoSuchElementException,e:
return False
return True
is_element_present方法用于查找页面元素是否存在,通过find_element()来接收元素的定位方法(how)和定位值(what),如果定位到元素则返回True,否则抛出异常并返回False。Try…except….为python语言的异常处理。
def is_alert_present(self):
try:
self.driver.switch_to_alert()
except NoAlertPresentException,e:
return False
return True
is_alert_present()方法用于判断当前页面是否存在警告框,利用webDriver提供的switch_to_alert()方法来捕捉页面上警告框。如果捕捉到警告框则返回True,否则将抛出NoAlertPresentException类型异常,并返回False。
经过验证,不管页面是否出现警告框,返回结果都是True,所有可以调整该方法为driver.switch_to_alert().text,用于获取当前页面上的警告提示信息,可以获取到就返回True,获取不到则返回False。
def close_alert_and_get_its_text(self):
try:
alert=self.driver.switch_to_alert()
alert_text=alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally:
self.accept_next_alert=True
close_alert_and_get_its_text()关闭警告并获得警告信息,首先通过switch_to_alert()获得警告,通过text获得警告框信息。接着通过if语句判断accept_next_alert的状态,在setUp()中已经初始状态为True,如果为True,则通过accept()接受警告,否则dissmiss()忽略此警告。
def tearDown(self):
self.driver.quit()
self.assertEqual([],self.verificationErrors)
tearDown()方法在每个测试方法执行后调用,这个方法用于测试用例执行后的清理工作,如退出浏览器、关闭驱动、恢复用例执行状态等。
在setUp()方法中定义的verificationErrors为空数组,这里通过assertEqual()比较其是否为空,如果为空则说明用例执行的过程中没有出现异常,否则将抛出AssertionError异常。
if __name__=="__main__":
unittest.main()
通过unittest.main()方法来运行当前文件中的测试方法,其默认匹配并运行以test开头的方法。
Selenium 2自动化测试实战33(带unittest的脚本分析)的更多相关文章
- Selenium 2自动化测试实战30(unittest补充)
unittest补充 1.用例执行的顺序 #test.py #coding:utf-8 from Demo1 import Count import unittest class TestBdd(un ...
- Selenium 2自动化测试实战27(unittest重要概念,test fixture、test case、test suite和test runne)
一.unittest重要概念 4个重要概念:test fixture.test case.test suite和test runner. 1.Test Case一个TestCase的实例就是一个测试用 ...
- Selenium 2自动化测试实战26(unittest单元测试框架)
一.unittest单元测试框架 1.认识单元测试 1.断言方法 #计算器类 #coding:utf-8 #计算器类 class Count: def __init__(self,a,b): self ...
- Python+selenium之带unittest的脚本分析
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.c ...
- Selenium 2自动化测试实战
Selenium 2自动化测试实战 百度网盘 链接:https://pan.baidu.com/s/1aiP3d8Y1QlcHD3fAlEj4sg 提取码:jp8e 复制这段内容后打开百度网盘手机Ap ...
- Selenium 2自动化测试实战3(函数、类和方法)
一.函数.类和方法1.函数在python中通过def关键字来定义函数 创建一个add()函数,此函数接收两个参数a,b,通过print()打印a+b的结果.调用add()函数,并且上传两个参数3,5给 ...
- 《Selenium 2自动化测试实战 基于Python语言》中发送最新邮件无内容问题的解决方法
虫师的<Selenium 2自动化测试实战 基于Python语言>是我自动化测试的启蒙书 也是我推荐的自动化测试入门必备书,但是书中有一处明显的错误,会误导很多读者,这处错误就是第8章自动 ...
- Selenium 与自动化测试 —— 《Selenium 2 自动化测试实战》读书笔记
背景 最近在弄 appium,然后顺便发现了 Selenium 框架和这本书,恰好这本书也介绍了一些软件测试&自动化测试的理论知识,遂拿过来学习学习.所以本文几乎没有实践内容,大多都是概念和工 ...
- Selenium 2自动化测试实战35(HTML测试报告)
HTML测试报告 显然,一份漂亮的测试报告展示自动化测试成果只有一个简单的log文件是不够的.HTMLTestRunner是python标准库unittest单元测试框架的一个扩展,它生成易于使用的H ...
随机推荐
- “System.Reflection.TargetInvocationException”类型的未经处理的异常在 mscorlib.dll 中发生
异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#signalR 第一种,权限不够,在项目运行的时候弹出==>解决方法:以管理员权限运行vs ...
- idou老师教你学istio1:如何为服务提供安全防护能力
之前,已为大家介绍过 Istio 第一主打功能---连接服务. 凡是产生连接关系,就必定带来安全问题,人类社会如此,服务网格世界,亦是如此. 今天,我们就来谈谈Istio第二主打功能---保护服务. ...
- PAT Basic 1057 数零壹 (20 分)
给定一串长度不超过 1 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0.多少 1.例如给定 ...
- Java中wait()与notify()理解
通常,多线程之间需要协调工作.例如,浏览器的一个显示图片的线程displayThread想要执行显示图片的任务,必须等待下载线程 downloadThread将该图片下载完毕.如果图片还没有下载完,d ...
- Centos6.5 下安装配置Apache+PHP+Mysql环境
1.准备工作 # yum -y update && yum -y install vim make cmake gcc gcc-c++ bison bison-devel ncurse ...
- HDU5514——容斥原理&&gcd
题目 链接 有n只青蛙,有m块石头,编号为0-m-1,第i只青蛙每次可以跳$a_i$, 刚开始都在0,问,青蛙总共可以跳到的石头之和为多少.其中$t≤20$,$1≤n≤10^4$,$1≤m≤10^9$ ...
- Qt 之 qInstallMessageHandler(日志重定向至文件)
Qt 日志重定向到文件 #include <QCoreApplication> #include <QDebug> #include <QMutex> #inclu ...
- BZOJ 2927: [Poi1999]多边形之战 (博弈)
题意 有一个凸多边形,顶点编号逆时针从0到n-1.现在这个n边形被剖分成n-2个三角形,给出这n-2个三角形的顶点,保证这是用n-3条不交叉的对角线划分出来的.现在第一个三角形是黑色,其他都是白色.两 ...
- 题解 noip2019模拟赛Day1T3
题面 运河计划 问题描述 水运在人类的交通运输史中一直扮演着重要的角色.借助河流.的便利,人们得以把大量的货物输送到天南海北不仅仅是自然界现成的河流,人工开凿的运河(如苏伊士运河.巴拿马运河.我国的京 ...
- SecureFX中文目录乱码问题解决方案
1.点击菜单栏中Options 2.找到General下的Configuration Paths并点击 3.在我的电脑打开 右面视图Configuration data is stored in th ...