1. 程式人生 > 實用技巧 >【web自動化】測試的登入處理

【web自動化】測試的登入處理

一.複用已有瀏覽器

應用場景:登入頁面需要使用者進行掃碼登入的

1.推出當前所有的谷歌瀏覽器

2.找到chrome的啟動路徑,並配置到環境變數中

3.啟動命令:

windows : chrome --remote-debugging-port=9222

mac:Chrome --remote-debugging-port=9222

4.訪問http://localhost:9222/

5.在需要掃碼登入的頁面上,先自己掃碼登入,然後再用程式碼開啟其它的頁面

程式碼如下:

1 2 3 4 5 6 7 8 deftest_multiplex_browser(self): """複用已有瀏覽器,只有chrome支援remote debug
""" chrome_option=webdriver.ChromeOptions() chrome_option.debugger_address='127.0.0.1:9222' self.driver=webdriver.Chrome(options=chrome_option) self.driver.get('https://work.weixin.qq.com/wework_admin/frame') self.driver.find_element_by_id('menu_contacts').click()

二.使用cookie

應用場景:使用使用者已經登入後的cookie或者開發給的一個長期cookie

1.先登入,獲取到cookie

2.用獲取到的cookies來開啟其它的頁面

   def test_cookie(self):
        self.driver = webdriver.Chrome()
        self.driver.get('https://work.weixin.qq.com/wework_admin/frame')

        cookies=[{'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.vst', 'path': '/', 'secure': False, 'value': 'uQYEE9pmrAqMiqGgH-HuvOud8iyrDYT6-cYK3Knu48wyxlGHPBsPgQ5V3jlJ_94sQuWkqZsCRgBbLSFoPIkZ3rBxAScq26xVg7v23I93ZHnAxsmC1toQaPwTbWL6M8d75iuVx5ogoSVldUStEfijHIH27f0Ibg8AQGVZrE5vpAOzuYG24q6MNNerfYZji7bIY3X38T2_D_k1yC8KJ5IOnnh_AJvOTE9vhdXWJS52y0yBWv-4tbPegBYl6CE-oyVGD1kw-D6NtbBwTixg1IJMbg'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wxpay.vid', 'path': '/', 'secure': False, 'value': '1688850993086434'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.ltype', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.sid', 'path': '/', 'secure': False, 'value': 'jlKkDPAbw-_2ajHbVc45AmN68pp03_uipXmsHyt2Uib9jR_V4jU49zFt-UNlTvPH'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wwrtx.d2st', 'path': '/', 'secure': False, 'value': 'a9782796'}, {'domain': '.work.weixin.qq.com', 'expiry': 1634125372, 'httpOnly': False, 'name': 'Hm_lvt_9364e629af24cb52acc78b43e8c9f77d', 'path': '/', 'secure': False, 'value': '1602468735,1602471614,1602471704,1602589372'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.refid', 'path': '/', 'secure': False, 'value': '3114847352240073'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.ref', 'path': '/', 'secure': False, 'value': 'direct'}, {'domain': '.qq.com', 'expiry': 1602589571, 'httpOnly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}, {'domain': 'work.weixin.qq.com', 'expiry': 1602606023, 'httpOnly': True, 'name': 'ww_rtkey', 'path': '/', 'secure': False, 'value': '3rs16jl'}, {'domain': '.qq.com', 'expiry': 1602675911, 'httpOnly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.1418420518.1602574488'}, {'domain': '.work.weixin.qq.com', 'expiry': 1605181511, 'httpOnly': False, 'name': 'wwrtx.i18n_lan', 'path': '/', 'secure': False, 'value': 'zh'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wxpay.corpid', 'path': '/', 'secure': False, 'value': '1970325124167270'}, {'domain': '.qq.com', 'expiry': 1917932908, 'httpOnly': False, 'name': 'pac_uid', 'path': '/', 'secure': False, 'value': '0_3062c037b13a1'}, {'domain': '.qq.com', 'expiry': 2147385600, 'httpOnly': False, 'name': 'pgv_pvid', 'path': '/', 'secure': False, 'value': '8967897655'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'Hm_lpvt_9364e629af24cb52acc78b43e8c9f77d', 'path': '/', 'secure': False, 'value': '1602589372'}, {'domain': '.qq.com', 'expiry': 1665661511, 'httpOnly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.730538557.1602467204'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wwrtx.vid', 'path': '/', 'secure': False, 'value': '1688850993086434'}, {'domain': '.work.weixin.qq.com', 'expiry': 1634003013, 'httpOnly': False, 'name': 'wwrtx.c_gdpr', 'path': '/', 'secure': False, 'value': '0'}]
        for cookie in cookies:
            self.driver.add_cookie(cookie)
        self.driver.get('https://work.weixin.qq.com/wework_admin/frame')
        self.driver.find_element_by_id('menu_contacts').click()
        time.sleep(5)

也可以用shelve(相當於一個小型的資料庫)來存放獲取到cookie

db=shelve.open('cookies')