selenium-python-Cookie跳過登錄驗證碼


問題:系統增加了登錄驗證碼功能,腳本不能正常執行。

解決方案:

A.跟開發溝通設置萬能碼

B.使用添加Cookie跳過驗證碼

Note:這個方法一般只試用測試環境,正式環境由於安全問題,使用該方法無效,而且session更新會使之前的value無效,所以需要不斷更新,建議寫配置文件。

 

 

1.輸入驗證碼后成功登錄,點擊F12。

 

2獲取到:PHPSESSID和_csrf后編寫登錄腳本:

 1 class CreateADNAppAndroid(unittest.TestCase):
 2     def setUp(self):
 3         self.options = webdriver.ChromeOptions()
 4 
 5         self.options.add_experimental_option("excludeSwitches", ["ignore-certificate-errors"])
 6 
 7        # browser = webdriver.Chrome(chrome_options=options)
 8         self.driver = webdriver.Chrome(chrome_options=self.options)
 9         #調用chrome瀏覽器並窗口最大化
10         self.driver.maximize_window()
11         self.driver.implicitly_wait(30)
12         self.base_url = "http://e.shiqutech.com"
13         self.verificationErrors = []
14         self.accept_next_alert = True
15     
16     def test_CreateADNAppAndroid(self):
17         """投放管理:ADN應用推廣:Create ADN App Android AD"""
18         driver = self.driver
19         driver.get(self.base_url + "/user/login")
20         testdata = open ("F:\\Auto-social\\ChromeAuto\\Advertiser\\data\\ADN\\csv\\CreateADNAppAndroid.csv",'rb')
21         user = testdata.readline()
22         driver.find_element_by_id("loginform-username").clear()
23         driver.find_element_by_id("loginform-username").send_keys(user)
24         time.sleep(2)
25         pw = testdata.readline()
26         driver.find_element_by_id("loginform-password").send_keys(pw)
27         time.sleep(2)
28         source1 = open("F:\\Auto-social\\ChromeAuto\\Advertiser\\data\\csrf.txt","r")
29         csrf = source1.read(166)
30         source1.close()
31         source2 = open("F:\\Auto-social\\ChromeAuto\\Advertiser\\data\\PHPSESSID.txt","r")
32         PHPSESSID = source2.read(26)
33         source2.close()
34         driver.add_cookie({'name':'_csrf', 'value':csrf})
35         driver.add_cookie({'name':'PHPSESSID', 'value':PHPSESSID})
36         driver.find_element_by_name("login-button").click()
37         time.sleep(4)

如果addcookie(34-35)后不需要再添加code#(22-26),直接點擊登錄就可以了,但是這個會根據server端設置session過期時間而定,如果輸入'_csrf'和'PHPSESSID'值無效了,就重新獲取下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM