python selenium——webdriver 通过cookie登陆

发表于:2017-6-29 13:20  作者:梦雨情殇   来源:博客

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: Python Selenium

   本文介绍一下如何利用cookie进行登陆系统,这里使用到了request模块,我们首先利用request模块,请求登陆地址进行登陆,登陆成功以后获取cookie值,然后再通过add_cookie添加到浏览器,使系统处于登陆状态。这里需要注意的是request请求返回的cookie的格式不能直接传入add_cookie方法,所以这里需要进行转换。
  #这里需要注意区别,按住格式进行转换。
#request 请求返回cookie的格式
{'PHPSESSID': 'alvrh1i2h7joj2il2jn3sh7up1', 'uid': '16'}
#selenium方法需要的cookie的格式
{'value': 'alvrh1i2h7joj2il2jn3sh7up1', 'httpOnly': False, 'domain': 'yingxiao.chewumi.com', 'name': 'PHPSESSID', 'secure': False, 'path': '/'}
下面看一下例子,来通过cookie登陆然后跳转到圈子详情页面
#-*- coding:utf-8 -*-
import time
import requests
from selenium import webdriver
def get_system_cookies(url,account,password):
    '''通过request 登陆系统,获取cookie'''
    cookiesList = []
    data = {"username":account,"passwd":password}
    roomSession  = requests.Session()
    roomSession.post(url,data=data)
    loadCookies = requests.utils.dict_from_cookiejar(roomSession.cookies)
    for cookieName,cookieValue in loadCookies.items():
        cookies = {}
        cookies['name'] = cookieName
        cookies['value'] = cookieValue
        cookiesList.append(cookies)
    return cookiesList
def is_login_status_succeed(driver):
    '''判断是否登陆状态,非登陆状态,通过cookie登陆'''
    loginUrl = 'http://yingxiao.chewumi.com/login.php'  #登陆地址
    account = 'account'  #账号
    password = 'password'  #密码
    driver.get('http://yingxiao.chewumi.com/index.php') #测试是否为登陆状态
    if '请登录' in driver.page_source:  #判断是否登陆为登陆页面
        for cookie in get_system_cookies(loginUrl,account,password): #如果登陆界面获取cookie
            driver.add_cookie(cookie)  #添加cookie ,通过Cookie登陆
    return driver
def request_circle_details(driver,requestUrl):
    '''测试跳转圈子详情'''
    is_login_status_succeed(driver)
    driver.get(requestUrl)
    verifyField = driver.find_element_by_xpath('/html/body/div/div/div[2]/h1').text  #获取页面标题
    try:
        assert verifyField == '圈子详情'
        return '测试通过'
    except AssertionError as e:
        return '测试未通过'
'''测试下效果'''
requestUrl = 'http://yingxiao.chewumi.com/list.php?page=1'
driver = webdriver.Chrome()
driver.maximize_window()
print (request_circle_details(driver,requestUrl))
driver.get(requestUrl)
time.sleep(2)
driver.quit()
通过结果显示我们没有操作操作登陆状态,直接进入了圈子详情到页面。


>>每天充电一小时,搞定Python全栈测试开发

评 论

论坛新帖

顶部 底部


建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海瀛东律师事务所 张楠律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2019, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道