为了防止网站被恶意注册,很多的网站都在登录页面加入了识别文字,识别图片,拖动拼图的方式来识别机器人,但是如果我们要用这个网站做UI自动化测试,登录的时候就会很麻烦,每次都要手动输入验证码之类的,使用cookie登录就能很好的解决这个问题。 cookie登录原理:第一次登录网站的时候手动输入信息,然后把cookie保存下载,cookie信息中存了一些可以识别用户身份的信息,第二次登录网站的时候,加载cookie,服务器就会通过cookie中的信息去识别用户,然后登录成功。所以cookie登录主要分为两大步,一是获取cookie,二是添加cookie。
获取cookie
import requests
import time
import json
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.jianshu.com/sign_in")
driver.find_element_by_id("session_email_or_mobile_number").send_keys("username")
driver.find_element_by_id("session_password").send_keys("password")
driver.find_element_by_id("sign-in-form-submit-btn").click()
time.sleep(10)
cookie = driver.get_cookies()
print(cookie)
cookie_data_file = "D:\CookieData.json"
json.dump(cookie,open(cookie_data_file,"w"))
登录时添加cookie
driver = webdriver.Chrome()
driver.get("https://www.jianshu.com/sign_in")
cookie_data_file = "D:\CookieData.json"
python_data = json.load(open(cookie_data_file))
print(python_data)
for cookie in python_data:
driver.add_cookie(cookie)
driver.get("https://www.jianshu.com/")
但是有一个问题是,使用cookie登录成功之后,页面就自动关闭了,没有办法进行后续操作,关闭原因是代码自动调用了service模块的stop方法,所以想要页面不关闭,可以设置足够的等待时间(time.sleep(n) )来完成后续操作。
|