设为首页 加入收藏

TOP

Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型(一)
2017-12-23 06:06:55 】 浏览:740
Tags:Selenium Python ---- 登录 等待 unittest 单元 测试 框架 模型
1、免登录
在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考

解决方式:手动请求中添加cookies、火狐的profile文件记录信息实现、人工介入、万能验证码、去掉验证码

1.1、手动在请求中添加cookies信息
 1 url = "http://www.baidu.com"
 2 driver = webdriver.Firefox()
 3 driver.get(url)
 4 time.sleep(3)
 5 #添加cookies的方式
 6 
 7 c1 = {'domain': '.baidu.com',
 8       'name':'BDUSS',
 9       'value': 'dyRlBucW9WOUhpNXducElPT1dlVHN1SFdFZUllTkJ-TEg5djNAAVe6gcaGFuc2hvdWthaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHa68lh2uvJYU2',
10       'path': '/',
11       'httpOnly': True,
12       'secure':False
13       }
14 driver.add_cookie(c1)
15 time.sleep(3)
16 # print(driver.get_cookies())   #得到当前cookies信息
17 # driver.delete_all_cookies()   #删除所有cookies信息
18 driver.refresh()
19 time.sleep(5)
20 
21 driver.quit()

  1.2、火狐的profile文件记录信息实现

1 #利用火狐profile文件的方式(前提:必须先手动登录一下)
2 profile_ff = "C:/Users/Hanxiaobei/AppData/Roaming/Mozilla/Firefox/Profiles/ytw908g4.default"
3 
4 fp = webdriver.FirefoxProfile(profile_ff)
5 driver = webdriver.Firefox(fp)
6 url = "http://www.baidu.com"
7 driver.get(url)
8 time.sleep(5)
9 driver.quit()
1.3、人工介入
1 driver.find_element_by_link_text("登录").click()
2 driver.find_element_by_id("TANGRAM__PSP_8__userName").send_keys("hankai")
3 driver.find_element_by_id("TANGRAM__PSP_8__password").send_keys("hankai")
4 time.sleep(15)              #导入等待时间人工输入验证码
5 driver.find_element_by_id("TANGRAM__PSP_8__submit").click()
6 
7 time.sleep(5)
8 driver.quit()

1.4、万能验证码、去掉验证码

万能验证码、去掉验证码需要开发的配合

 

2、等待

2.1、time模块

1 import time
2 
3 time.sleep(5)

 

2.2、隐式等待

1 driver.implicitly_wait(20) 

2.3、显式等待

1 url = "http://www.baidu.com"
2 driver = webdriver.Firefox()
3 driver.get(url)
4 #显性等待
5 kk = WebDriverWait(driver,10).until(lambda driver:driver.find_element_by_id("kw"),message="worry!")
6 kk.send_keys("测试")

3、unittest单元测试框架

简单的unittest框架代码如下:

 1 import unittest,time
 2 from selenium import webdriver
 3 from selenium.webdriver.common.by import By
 4 class Baidu(unittest.TestCase):
 5     def setUp(self):
 6         self.driver = webdriver.Chrome()
 7         url = "http://www.baidu.com"
 8         self.driver.get(url)
 9         self.driver.implicitly_wait(20)
10         self.verificationErrors = []
11 
12     def tearDown(self):
13         self.driver.quit()
14         self.assertEqual([],self.verificationErrors,msg="验证失败")
15 
16     def test_search(self):
17         self.driver.find_element(By.ID,"kw").send_keys("hanxiaobei")
18         self.driver.find_element(By.ID,"su").click()
19         time.sleep(5)
20 
21 if __name__ == "__main__":
22  第一种形式:
23     #unittest.main()
24 
25 第二种形式:
26 suite = unittest.TestSuite()
27 suite.addTest(Baidu("test_search"))
28 
29 runner = unittest.TextTestRunner()
30 runner.run(suite)

可生成html报告的unittest框架代码如下:

 1 from selenium import webdriver
 2 import time
 3 import unittest
 4 import HTMLTestRunner
 5 
 6 class Test_case(unittest.TestCase):
 7     """测试类"""
 8     def setUp(self):
 9         self.url = "http://www.baidu.com"
10         self.driver = webdriver.Firefox()
11         self.driver.implicitly_wait(20)
12         self.verificationErrors = []
13 
14     def tearDown(self):
15         self.driver.quit()
16         self.assertEqual
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇window7_64+python3.6安装Twisted 下一篇Celery(四)定时任务

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目