解决selenium,为绕过登录页面,添加cookie报错问题。

首先,使用selenium按照正常的步骤,在注册页面,找到用户名、密码输入框,输入验证码,并点击登录。注意:此时要有个长时间的sleep,主要用于手动操作,以及登录成功后加载页面。

driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH)
driver.get(url_login)
driver.find_element_by_id('user').send_keys('*****')
driver.find_element_by_id('password').send_keys('******')
time.sleep(5)
driver.find_element_by_xpath('//*[@id="logForm"]/div[5]/input').click()
time.sleep(15)

 手动登录成功后,获取登录后的cookie:

cookie_get = driver.get_cookies()
print(cookie_get)

注意,此时应该将浏览器的所有cookie清除掉:

driver.delete_all_cookies()
time.sleep(5)
driver.refresh()

然后就可以添加你获取到的cookie了,注意,selenium跟requests不同,在添加cooki前,需要先访问你要绕过登录页访问的那个url,然后再添加cookie:

driver.get(url_user)
cookies = cookie_get
for cookie in cookies:
    driver.add_cookie(cookie)
driver.refresh()

此时你可能会发现报错了

selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: invalid 'expiry'

不要慌,将cookie中包含这个字段的键值对去掉就好:

for cookie in cookies:
    if 'expiry' in cookie:
        del cookie['expiry']
    driver.add_cookie(cookie)

此时,就可以绕过登录页面直接访问你要访问的页面了。

后记:

可以使用python自带的pickle库,将cookie持久的化储存起来,需要的时候直接读取即可。

 

 

 

 

你可能感兴趣的:(解决selenium,为绕过登录页面,添加cookie报错问题。)