上节介绍了浏览器的常用方法,涉及到了cookie的使用,本节介绍一下如何利用cookie进行登陆系统,这里使用到了request模块,我们首先利用request模块,请求登陆地址进行登陆,登陆成功以后获取cookie值,然后再通过add_cookie添加到浏览器,使系统处于登陆状态。这里需要注意的是request请求返回的cookie的格式不能直接传入add_cookie方法,所以这里需要进行转换。

#这里需要注意区别,按住格式进行转换
#request 请求返回cookie的格式
{'PHPSESSID': 'alvrh1i2h7joj2il2jn3sh7up1', 'uid': ''} #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 selenium-webdriver 通过cookie登陆(十一)的更多相关文章

  1. Python Selenium Webdriver常用方法总结

    Python Selenium Webdriver常用方法总结 常用方法函数 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: m ...

  2. Python+Selenium+webdriver环境搭建(windows)以及相关资源下载链接

    今天记录一下测试小菜鸟alter在测试入门的一点关于python+Selenium+webdriver环境搭建的经历以及资源分享.欢迎交流学习,批评指正. 一.Python的下载与安装 1.pytho ...

  3. python selenium webdriver入门基本操作

    python selenium webdriver入门基本操作 未经作者允许,禁止转载! from selenium import webdriver import time driver=webdr ...

  4. Selenium WebDriver 处理cookie

    在使用webdriver测试中,很多地方都使用登陆,cookie能够实现不必再次输入用户名密码进行登陆. 首先了解一下Java Cookie类的一些方法. 在jsp中处理cookie数据的常用方法: ...

  5. selenium webdriver(6)---cookie相关操作

    介绍selenium操作cookie之前,先简单介绍一下cookie的基础知识 cookie cookie一般用来识别用户身份和记录用户状态,存储在客户端电脑上.IE的cookie文件路径(win7) ...

  6. Python+Selenium WebDriver API:浏览器及元素的常用函数及变量整理总结

    由于网页自动化要操作浏览器以及浏览器页面元素,这里笔者就将浏览器及页面元素常用的函数及变量整理总结一下,以供读者在编写网页自动化测试时查阅. from selenium import webdrive ...

  7. Python + Selenium WebDriver Api 知识回顾

    一直再用 Selenium WebDriver 但是用的都比较零散,也没有做过总结,今天借此机会,整理一下,方便大家使用时查阅 webDriver  的属性 ['CONTEXT_CHROME', 'C ...

  8. Python selenium.webdriver.chrome.options.Options() Examples

    The following are 27 code examples for showing how to use selenium.webdriver.chrome.options.Options( ...

  9. windows操作系统python selenium webdriver安装

    这几天想搞一个爬虫,就来学习一下selenium,在网上遇见各种坑,特写一篇博文分享一下selenium webdriver的安装过程. 一.安装selenium包 pip install selen ...

  10. Linux环境下搭建python+selenium+webdriver环境

    1.下载并安装python,一般安装linux系统,自带有python,则python不用安装.要下载可以在官网上下载: 或者使用下面命令安装: sudo apt-get install python ...

随机推荐

  1. IOS的控制器

    控制器简单来说,就是用来做界面跳转的,类似于 Android 的Intent 1.创建一个控制器 控制器的常见的创建方式 )通过storyboard创建 //直接创建 NJViewController ...

  2. centos下搭建redis集群

    必备的工具: redis-3.0.0.tar redis-3.0.0.gem   (ruby和redis接口) 分析:     首先,集群数需要基数,这里搭建一个简单的redis集群(6个redis实 ...

  3. 每天一道Java题[1]

    问题:char[]与String相比,有什么优胜的地方? 回答: 针对安全保密高的信息,char[]比String做得更好.因为String是不可变得,即使你修改原先的变量,实际上也是在内存中新建一个 ...

  4. centos6.5软件安装:RPM,SRPM与yum功能

    鸟哥的linxu私房菜读书笔记 前言: Linux上软件的安装可以以原始码的方式来安装软件,也就是利用厂商释出的 Tarball 来进行软件的安装.不过,你应该很容易发现,那就是每次安装软件都需要侦测 ...

  5. Python学习(一) —— matplotlib绘制三维轨迹图

    在研究SLAM时常常需要对其输出的位姿进行复现以检测算法效果,在ubuntu系统中使用Python可以很好的完成相关的工作. 一. Ubuntu下Python的使用 在Ubuntu下使用Python有 ...

  6. 如何在WebGL全景图上做标记

    WebGL可以用来做3D效果的全景图呈现,例如故宫的全景图.但有时候我们不仅仅只是呈现全景图,还需要增加互动.故宫里边可以又分了很多区域,例如外朝中路.外朝西路.外朝东路等等.我们需要在3D图上做一些 ...

  7. 合成(composite)模式

    合成模式属于对象的结构模式,有时又叫做“部分——整体”模式.合成模式将对象组织到树结构中,可以用来描述整体与部分的关系.合成模式可以使客户端将单纯元素与复合元素同等看待. 合成模式 合成模式把部分和整 ...

  8. JEESZ-kafka消息服务平台实现

    JEESZ的消息服务平台已经抛弃了之前的ActiveMQ,改用高吞吐量比较大的Kafka分布式消息中间件方案:JEESZ-kafka消息平台使用spring+kafka的集成方案,详情如下:1. 使用 ...

  9. Memcache服务搭建

    Memcache Memcache的作用网上资料都讲的很好,说简单点就是减轻读取数据库的压力,原理也很简单: 被请求的数据会先到memcache里去取,如果没有就去数据库里取,顺便给memcache带 ...

  10. 【转】c++ new操作符的重载

    基本概念: 1. 操作符重载:C++支持对某个操作符赋予不同的语义 2. new操作符:申请内存,调用构造函数 关于c++ new操作符的重载 你知道c++ 的new 操作符和operator new ...