Selenium基于Python web自动化基础二 -- 免登录、等待及unittest单元测试框架
一、免登录
在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考
解决方式:手动请求中添加cookies、火狐的profile文件记录信息实现、人工介入、万能验证码、去掉验证码 1、手动在请求中添加cookies信息
url = "http://www.baidu.com"
driver = webdriver.Firefox()
driver.get(url)
time.sleep()
#添加cookies的方式 c1 = {'domain': '.baidu.com',
'name':'BDUSS',
'value': 'dyRlBucW9WOUhpNXducElPT1dlVHN1SFdFZUllTkJ-TEg5djNAAVe6gcaGFuc2hvdWthaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHa68lh2uvJYU2',
'path': '/',
'httpOnly': True,
'secure':False
}
driver.add_cookie(c1)
time.sleep()
# print(driver.get_cookies()) #得到当前cookies信息
# driver.delete_all_cookies() #删除所有cookies信息
driver.refresh()
time.sleep() driver.quit()
2、火狐的profile文件记录信息实现
#利用火狐profile文件的方式(前提:必须先手动登录一下,且需要勾选记住信息)
profile_ff = "C:/Users/Hanxiaobei/AppData/Roaming/Mozilla/Firefox/Profiles/ytw908g4.default" fp = webdriver.FirefoxProfile(profile_ff)
driver = webdriver.Firefox(fp)
url = "http://www.baidu.com"
driver.get(url)
time.sleep()
driver.quit()
3、人工介入
driver.find_element_by_link_text("登录").click()
driver.find_element_by_id("TANGRAM__PSP_8__userName").send_keys("hankai")
driver.find_element_by_id("TANGRAM__PSP_8__password").send_keys("hankai")
time.sleep() #导入等待时间人工输入验证码
driver.find_element_by_id("TANGRAM__PSP_8__submit").click()
time.sleep()
driver.quit()
4、万能验证码、去掉验证码
万能验证码、去掉验证码需要开发的配合
二、等待 1、time模块
import time time.sleep()
2、隐形等待
driver.implicitly_wait()
3、显性等待
url = "http://www.baidu.com"
driver = webdriver.Firefox()
driver.get(url)
#显性等待
kk = WebDriverWait(driver,).until(lambda driver:driver.find_element_by_id("kw"),message="worry!")
kk.send_keys("测试")
三、unittest单元测试框架
简单的unittest框架代码如下:
import unittest,time
from selenium import webdriver
from selenium.webdriver.common.by import By
class Baidu(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
url = "http://www.baidu.com"
self.driver.get(url)
self.driver.implicitly_wait()
self.verificationErrors = [] def tearDown(self):
self.driver.quit()
self.assertEqual([],self.verificationErrors,msg="验证失败") def test_search(self):
self.driver.find_element(By.ID,"kw").send_keys("hanxiaobei")
self.driver.find_element(By.ID,"su").click()
time.sleep() if __name__ == "__main__":
第一种形式:
#unittest.main()
第二种形式:
1 suite = unittest.TestSuite()
suite.addTest(Baidu("test_search")) runner = unittest.TextTestRunner()
runner.run(suite)
可生成html报告的unittest框架代码如下:
from selenium import webdriver
import time
import unittest
import HTMLTestRunner class Test_case(unittest.TestCase):
"""测试类"""
def setUp(self):
self.url = "http://www.baidu.com"
self.driver = webdriver.Firefox()
self.driver.implicitly_wait()
self.verificationErrors = [] def tearDown(self):
self.driver.quit()
self.assertEqual([],self.verificationErrors) def test_sou1(self):
"""测试搜索演示1"""
self.driver.get(self.url)
self.driver.find_element_by_id("kw").send_keys("测试")
self.driver.find_element_by_id("su").click()
self.driver.close()
time.sleep()
def test_sou2(self):
"""测试搜索演示2"""
self.driver.get(self.url)
self.driver.find_element_by_id("k").send_keys("自动化测试")
self.driver.find_element_by_id("su").click()
self.driver.close()
time.sleep() #生成一个运行测试用例集合
suite = unittest.TestSuite()
suite.addTest(Test_case('test_sou1'))
suite.addTest(Test_case('test_sou2')) '''
生成基于html的测试报告:
1定义一个文件的路径
2以写的方式进行打开文件
3调用htmltestrunner的方法生成测试报告
4运行测试集合
5关闭文件
'''
report_file=".\\20170423_report.html"
fp = open(report_file,"wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title="搜索",description="测试搜索结果")
runner.run(suite)
fp.close()
Selenium基于Python web自动化基础二 -- 免登录、等待及unittest单元测试框架的更多相关文章
- Selenium基于Python web自动化基础一 -- 基础汇总及简单操作
Selenium是UI层WEB端的自动化测试框架,也是目前市面上比较流行的自动化测试框架. ui层自动化测试本质是什么?模拟用户的真实操作行为. 基础汇总: 导入所需要的模块 from seleniu ...
- Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型
1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...
- Selenium基于Python web自动化测试框架 -- PO
关于selenium测试框架首先想到的就是PO模型,简单说下PO模型 PO模型的概念和理解: PO就是一个设计思想,将代码以页面为单位进行组织,针对这个页面上的所有信息.相关操作都放到一个类中,从而使 ...
- 第十五章:Python の Web开发基础 (二) JavaScript与DOM
本課主題 JavaScript 介绍 DOM 介绍 JavaScript 介绍 JavaScript 是一门编程语言,它可以让网页动起来的,JavaScript 的变量有两种,一个是局部变量:一个是全 ...
- Python接口自动化基础---cookie绕过登录
使用fiddler获取登录cookie 对比登录前和登录后的cookis 登录前 登录后: 获得cookie之后,使用cookie访问,就可以获取登录态: import requests url='h ...
- python接口自动化(二十一)--unittest简介(详解)
简介 前边的随笔主要介绍的requests模块的有关知识个内容,接下来看一下python的单元测试框架unittest.熟悉 或者了解java 的小伙伴应该都清楚常见的单元测试框架 Junit 和 T ...
- Selenium(十七):unittest单元测试框架(三) 脚本分析、编写Web用例
1. 带unittest的脚本分析 也许你现在心里还有疑问,unittest框架与我们前面所编写的Web自动化测试之间有什么必然联系吗?当然有,既然unittest可以组织.运行测试用例,那么为什么不 ...
- Python+selenium之简单介绍unittest单元测试框架
Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...
- Python+Selenium框架设计篇之-简单介绍unittest单元测试框架
前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest. unit ...
随机推荐
- [转]Attribute在.net编程中的应用
Attribute在.net编程中的应用(一) Attribute的基本概念 经常有朋友问,Attribute是什么?它有什么用?好像没有这个东东程序也能运行.实际上在.Net中,Attribute是 ...
- 手把手教你开发Chrome扩展二:为html添加行为
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 上一节我们 ...
- 镜像二叉树——剑指Offer
https://www.nowcoder.net/practice/564f4c26aa584921bc75623e48ca3011?tpId=13&tqId=11171&tPage= ...
- distcp导致个别datanode节点数据存储严重不均衡分析
hadoop2.4生产集群已经执行一段时间了.因为大量的hadoop1.0上面的应用不断迁移过来.刚開始事hdfs这边还没有出现多少问题.随着时间的推移,近期发现个别的datanode节点上面的磁盘空 ...
- Java生成带logo 的二维码
这个工具类主要实现了两点功能: 1. 生成任意文链接的二维码. 2. 在二维码的中间加入图像. 主要实现步骤: 第一步: 导入QR二维码3.0 版本的core包和一张jpg图片(logo). core ...
- 编译android的一些坑
1 降级gcc g++到4.4 2 参考:http://source.android.com/source/initializing.html来配置环境 3 使用jdk1.6 包括 java java ...
- luence全文检索(简介)
刚开始做全文检索也是找了很多资料但是网上的都不是很齐全luence是个很不多的工具 Lucene4.0的官网文档:http://lucene.apache.org/core/4_0_0/core/ov ...
- android 制作9.png图片
什么叫.9.PNG呢,这是安卓开发里面的一种特殊的图片 这种格式的图片在android 环境下具有自适应调节大小的能力. (1)允许开发人员定义可扩展区域,当需要延伸图片以填充比图片本身更大区 ...
- mysql —— 利用Navicat 导出和导入数据库
Navicat for MySql 导出数据库方法: 打开Navicat for MySql,在要导出的数据库上面右击鼠标,点击“转储SQL 文件”→“数据和结构”. 找到合适的路径,点击“保存”. ...
- POJ 1659 Frogs' Neighborhood (贪心)
题意:中文题. 析:贪心策略,先让邻居多的选,选的时候也尽量选邻居多的. 代码如下: #pragma comment(linker, "/STACK:1024000000,102400000 ...