一、免登录
在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考

解决方式:手动请求中添加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单元测试框架的更多相关文章

  1. Selenium基于Python web自动化基础一 -- 基础汇总及简单操作

    Selenium是UI层WEB端的自动化测试框架,也是目前市面上比较流行的自动化测试框架. ui层自动化测试本质是什么?模拟用户的真实操作行为. 基础汇总: 导入所需要的模块 from seleniu ...

  2. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  3. Selenium基于Python web自动化测试框架 -- PO

    关于selenium测试框架首先想到的就是PO模型,简单说下PO模型 PO模型的概念和理解: PO就是一个设计思想,将代码以页面为单位进行组织,针对这个页面上的所有信息.相关操作都放到一个类中,从而使 ...

  4. 第十五章:Python の Web开发基础 (二) JavaScript与DOM

    本課主題 JavaScript 介绍 DOM 介绍 JavaScript 介绍 JavaScript 是一门编程语言,它可以让网页动起来的,JavaScript 的变量有两种,一个是局部变量:一个是全 ...

  5. Python接口自动化基础---cookie绕过登录

    使用fiddler获取登录cookie 对比登录前和登录后的cookis 登录前 登录后: 获得cookie之后,使用cookie访问,就可以获取登录态: import requests url='h ...

  6. python接口自动化(二十一)--unittest简介(详解)

    简介 前边的随笔主要介绍的requests模块的有关知识个内容,接下来看一下python的单元测试框架unittest.熟悉 或者了解java 的小伙伴应该都清楚常见的单元测试框架 Junit 和 T ...

  7. Selenium(十七):unittest单元测试框架(三) 脚本分析、编写Web用例

    1. 带unittest的脚本分析 也许你现在心里还有疑问,unittest框架与我们前面所编写的Web自动化测试之间有什么必然联系吗?当然有,既然unittest可以组织.运行测试用例,那么为什么不 ...

  8. Python+selenium之简单介绍unittest单元测试框架

    Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...

  9. Python+Selenium框架设计篇之-简单介绍unittest单元测试框架

    前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest.       unit ...

随机推荐

  1. WebLogic11g-创建域(Domain)及基本配置

      最近看到经常有人提问weblogic相关问题,所以闲暇之际写几篇博文(基于weblogic11),仅供大家参考. 具体weblogic的介绍以及安装,这里就不赘述了. 以域的创建开篇,虽然简单,但 ...

  2. vijos - P1447开关灯泡 (大数模板 + 找规律 + 全然数 + python)

    P1447开关灯泡 Accepted 标签:CSC WorkGroup III[显示标签] 描写叙述 一个房间里有n盏灯泡.一開始都是熄着的,有1到n个时刻.每一个时刻i,我们会将i的倍数的灯泡改变状 ...

  3. Word Break II 求把字符串拆分为字典里的单词的全部方案 @LeetCode

    这道题相似  Word Break 推断能否把字符串拆分为字典里的单词 @LeetCode 只不过要求计算的并不不过能否拆分,而是要求出全部的拆分方案. 因此用递归. 可是直接递归做会超时,原因是Le ...

  4. nyist oj 19 擅长排列的小明(dfs搜索+STL)

    擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 小明十分聪明.并且十分擅长排列计算.比方给小明一个数字5,他能立马给出1-5按字典序的全排列,假设你想 ...

  5. nlssort排序

    ALTER SESSION SET NLS_SORT=''; 排序影响整个会话 Oracle9i之前,中文是按照二进制编码进行排序的. 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NL ...

  6. 实现日、周、月排行统计 sql

    在如今很多系统中,都需要进行日.周.月排行统计,但是在网上寻找 了一番,发现很多都是相对的周.月排行,即周排行则用当前时间减去7天.这样我个人认为并不恰当.如月排行中,假设今天是4月22日,则从3月2 ...

  7. nginx负载均衡向后台传递參数方法(后端也是nginxserver)

    做了一个站点是用nginx 做的负载均衡.后端也是多个nginxserver 遇到了一个问题.当做SSL支持时 前端nginx分发到 后端nginx后就成 http形式了(这样后台php用$_SERV ...

  8. c# Custom Controls

    http://www.cnblogs.com/light169/archive/2008/06/11/1217139.html

  9. data-toggle data-target

    data-toggle https://stackoverflow.com/questions/30629974/how-does-the-data-toggle-attribute-work-wha ...

  10. windows下mongodb设置用户名密码&用python连接

    环境: 主机:WIN10 python版本:3.5 mongodb版本:3.4.2 开发环境:pyCharm mongodb设置用户名密码: 编写mongodb配置文件mongodb.confdbpa ...