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

解决方式:手动请求中添加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. 如何以正确的顺序重新安装驱动程序 | Dell 中国

      购买 支持 社区 我的帐户     购买 支持 社区   如何以正确的顺序重新安装驱动程序 在戴尔笔记本电脑或台式机上手动重新安装Microsoft Windows操作系统后,您还必须以正确的顺序 ...

  2. Flink内存管理源代码解读之基础数据结构

    概述 在分布式实时计算领域,怎样让框架/引擎足够高效地在内存中存取.处理海量数据是一个非常棘手的问题.在应对这一问题上Flink无疑是做得非常杰出的,Flink的自主内存管理设计或许比它自身的知名度更 ...

  3. QlikView格式化某一个单元格

    QlikView中能够创建透视表和垂直表,或者一般的Table.假如有的时候须要某一个单元格的样式和其它单元格不一样.颜色或者边框宽度等.能够通过下面方式实现: 工具栏里面有个button叫:Desi ...

  4. Ubuntu18.04系统中vi键盘输入字符不匹配

    起因 今天重装了我的雷神笔记本的ubuntu18.04,不要问我为什么,我就是想复习下重装系统而已.好吧,我承认我改错文件启动不起来了. 于是我要重装jdk.maven and so on,但是当我用 ...

  5. 动态生成页面(一)——ASP.NET中Literal使用

    在页面中加入内容时,假设是静态内容.无需使用容器,能够直接将标记作为HTML直接加入到页面中:可是,假设是动态内容,则必须借助容器将内容加入到页面中.典型的容器有:Label控件.Literal控件. ...

  6. 基于AR谱特征的声目标识别

    本文第一部分先解释AR谱,但并不会给出太多的细节,第二部分介绍几种常见的语音中的特征.有些在之前的博文中已经用过.诸如过零率. 第三部分给出实际操作的过程及识别的效果.本文的目标是通过对DSP採集的声 ...

  7. [计算机故障]笔记本无法启动,开机启动出现“Operating System Not Found”无法进系统

    背景介绍:同事的一台索尼的笔记本,安装XP.开机启动出现“Operating System Not Found”无法进系统 诊断: 初步判断硬盘故障.但听声音,没有异响. 开机按F2进入BIOS设置. ...

  8. ORA-00907: 缺失右括号(通用解决办法)

    PL/SQL 的SQL语句可以执行,但是放在hibernate中,后台打印,出现了错误. 错误的SQL解析:黄色为错误部分 Hibernate:      select         examine ...

  9. ssh服务常见问题及其解决办法

    1 统一解决办法 执行sshd -t,这样就可以指出是哪里出问题了. 所有的服务都应该有这个测试选项,否则出错了都不知道在哪里出的问题. 2 root用户登录,密码是对的,但是报“Permission ...

  10. python库学习笔记——re库:正则表达式入门(一)

    什么是正则表达式? 我们在处理文本文件的时候,会按照某种规则查找某些特定的字符串.比方我们希望从一堆电子档案中找到人员的电话号码整理成通讯录.于是,我们可以利用特定字符串的规律编程获得我们想要的信息. ...