【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