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

本文介绍如何在自动化测试中处理登录流程,包括使用cookies绕过登录、火狐浏览器配置文件记录登录状态、人工处理验证码等方法,并提供了等待机制、单元测试框架及PO模型的应用实例。
最低0.47元/天 解锁文章

365

被折叠的 条评论
为什么被折叠?



