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 ...
随机推荐
- java压缩与解压文件
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import ...
- intellij使用tomcat搭建servlet运行时环境
http://suiyu.online/2017/08/01/intellij%E4%BD%BF%E7%94%A8tomcat%E6%90%AD%E5%BB%BAservlet%E8%BF%90%E8 ...
- Java这样学,Offer随便拿,学习方法和面试经验分享
Java这样学,Offer随便拿,学习方法和面试经验分享 学习中:https://mp.weixin.qq.com/s/iSutLzqCiPMWwm_Rm_2oPw
- CodeIgniter 向mysql插入数据包括字母、汉字问题
今天在使用ci框架,须要向mysql数据表插入数据.当中的一个字段包括汉字.字母.但是用传统的使用sql语句:insert into XXX这样的方式,不管怎样都插入不成功,最后我换了还有一种方式: ...
- 任务调度(三)——Timer的替代品ScheduledExecutorService简单介绍
先前的两篇博文<任务调度(一)--jdk自带的Timer>和<任务调度(二)--jdk自带的Timer 动态改动任务运行计划>中,简介了一下Timer,能够实现几本的功能.可是 ...
- Redis缓存数据库安全加固指导(二)
背景 在众多开源缓存技术中,Redis无疑是目前功能最为强大,应用最多的缓存技术之一,参考2018年国外数据库技术权威网站DB-Engines关于key-value数据库流行度排名,Redis暂列第一 ...
- 容器与容器编排实战系列 1 -- Docker 安装
CentOS7.4 下安装Docker 详细步骤 第一步:安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2 yu ...
- 【bzoj2748】[HAOI2012]音量调节
设F[i][j]表示在第i首歌曲结束后,音量能否刚好为j 转移:F[i][j]=F[i][j-C[i]] or F[i][j+C[i]] 初始化:F[0][beginlevel]=true 最后在所有 ...
- 【bzoj1034】[ZJOI2008]泡泡堂BNB
贪心 将双方的选手均按从强到弱排序,然后第一次扫描尽可能用当前剩下的选手中能赢对手当前最强选手中最弱的一个去赢得胜利,若无法做到,则暂时不考虑给对方最强的选手匹配对手.第二遍扫描使用同样策略去获取尽量 ...
- 第一次PHP面试题
1.标记符title是放在标记符什么之间:head 2.级联样式表文件的扩展名:CSS 3.html中<pre>的作用:pre 元素可定义预格式化的文本 4.mysql_affected_ ...