【pytest框架之web自动化测试】---二维码登录的实现(登录的复用和cookies的使用)


当需要登录的网址中登录方式只包含扫描二维码时,如何用自动化实现呢?

方法1.这里需要用到复用,跳过登录阶段

比如企业微信登录时,可选方式只有一种:手机扫描二维码,验证通过后才可以进入企业微信

 

 

 

 https://work.weixin.qq.com/wework_admin/loginpage_wx

 

 

selenium中的webdriver提供了一种方法

chrome_arg=webdriver.ChromeOptions()
chrome_arg.debugger_address= '127.0.0.1:9222'
self.driver = webdriver.Chrome(options=chrome_arg)
以调试模式打开浏览器。

具体步骤如下:
1.cmd指定Chrome调试地址
chrome -remote-debugging-port=9222

 

 2.验证调试地址是否可以正常打开---注意必须能正常打开,后续pytest文件才可以正常执行

 

 

 3.手机扫描二维码并登录--这里用的是企业微信二维码

4.代码中指定以调试方式打开Chrome--注意ip地址和端口号需要和cmd中对应

 1 # -*- coding:utf-8 -*-
 2 # author:xjw
 3 # date=2021/3/2
 4 #企业微信web端登录
 5 import json
 6 from http import cookies
 7 
 8 from time import sleep
 9 
10 from selenium import webdriver
11 
12 
13 class Testweixin():
14     def setup(self):
15         #self.driver=webdriver.Chrome()
16         chrome_arg=webdriver.ChromeOptions()
17         chrome_arg.debugger_address= '127.0.0.1:9222'
18         self.driver = webdriver.Chrome(options=chrome_arg)
19         self.driver.implicitly_wait(5)
20     def teardown(self):
21         self.driver.quit()
22     # def test_weixinlogin(self):
23     # 登录首页登录
24     #     self.driver.get('https://work.weixin.qq.com/')
25     #     self.driver.find_element_by_css_selector('[class="index_top_operation_loginBtn"]').click()
26     #     self.driver.find_element_by_css_selector('[class="login_registerBar_link"]').click()
27     #     self.driver.find_element_by_xpath('//*[@id="corp_name"]').send_keys('123')
28 
29 
30     def test_after_login(self):
31         # 登录后浏览器复用
32         self.driver.get('https://work.weixin.qq.com/wework_admin/frame')
33         self.driver.find_element_by_xpath('//*[@id="menu_contacts"]').click() #//*[@id="menu_contacts"]/span
34         sleep(3)
35 
36     # def test_cookies(self):
37     #     #使用cookies登录
38     #     cookies = self.driver.get_cookies()
39     #     # print(cookies)
40     #     self.driver.get('https://work.weixin.qq.com/wework_admin/frame')
41     #     # with open('tmp.txt','r',encoding='utf-8') as f:
42     #     #     #f.write(json.dumps(cookies))
43     #     #     raw_cookies=f.read()
44     #     #     cookies=json.loads(raw_cookies)
45     #     # for cookie in cookies:
46     #     #     self.driver.add_cookie(cookie)
47     #     self.driver.refresh()
48     #     sleep(2)

 

预期结果:
执行代码后,直接跳过登录阶段进入企业微信首页并点击了通讯录。

 

方法2:使用cookies登录

步骤:

1.手机扫描二维码并登录成功

2.代码中获取登录的cookies,携带此cookies

可以先获取cookies存入本地文件,然后从本地文件读取,以下代码可以直接跳过二维码扫描操作,直接访问通讯录

 1 # -*- coding:utf-8 -*-
 2 # author:xjw
 3 # date=2021/3/2
 4 #企业微信web端登录
 5 import json
 6 from http import cookies
 7 
 8 from time import sleep
 9 
10 from selenium import webdriver
11 
12 
13 class Testweixin():
14     def setup(self):
15         #self.driver=webdriver.Chrome()
16         chrome_arg=webdriver.ChromeOptions()
17         chrome_arg.debugger_address= '127.0.0.1:9222'
18         self.driver = webdriver.Chrome()
19         self.driver.implicitly_wait(5)
20     def teardown(self):
21         self.driver.quit()
22     # def test_weixinlogin(self):
23     # 登录首页登录
24     #     self.driver.get('https://work.weixin.qq.com/')
25     #     self.driver.find_element_by_css_selector('[class="index_top_operation_loginBtn"]').click()
26     #     self.driver.find_element_by_css_selector('[class="login_registerBar_link"]').click()
27     #     self.driver.find_element_by_xpath('//*[@id="corp_name"]').send_keys('123')
28 
29 
30     def test_after_login(self):
31         # 登录后浏览器复用
32         self.driver.get('https://work.weixin.qq.com/wework_admin/frame')
33         self.driver.find_element_by_xpath('//*[@id="menu_contacts"]').click() #//*[@id="menu_contacts"]/span
34         sleep(3)
35 
36     def test_cookies(self):
37         #使用cookies登录
38 
39         # #存入cookies  注意此时self.driver = webdriver.Chrome(options=chrome_arg) 要带上options=chrome_arg
40         # cookies = self.driver.get_cookies()
41         # with open('tmp.txt', 'w', encoding='utf-8') as f:
42         #     f.write(json.dumps(cookies))
43 
44         #读取cookies  注意此时self.driver = webdriver.Chrome() 要去掉options
45         self.driver.get('https://work.weixin.qq.com/wework_admin/frame#contacts')
46         # self.driver.find_element_by_xpath('//*[@id="menu_contacts"]').click()
47         with open('tmp.txt','r',encoding='utf-8') as f:
48             #f.write(json.dumps(cookies))
49             raw_cookies=f.read()
50             cookies=json.loads(raw_cookies)
51         for cookie in cookies:
52             self.driver.add_cookie(cookie)
53         self.driver.refresh()
54         sleep(2)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM