可以把cookie理解为自己账户的身份证。因为http协议是无状态的,上一个请求和下一个请求没有关系。但是有时需要有关联。比如登录之后,才能进行操作这样的设置。这个就是cookie在起作用。登录成功时,服务器会给浏览器一个cookie,浏览器会解析存在本地。然后同一个网站,下一次请求时就会把这个cookie带上,告诉服务器是哪个用户在操作。在关闭浏览器时cookie有效期结束。

WebDriver提供了一些用来操作cookie的方法:

get_cookies():获得cookie所有信息,返回的是一个字典

get_cookie(key):获取返回cookie中,某一个key的值

add_cookie(cookie_dict):手动添加cookie,需要传一个字典进去,用cookie_dict来接收,字典的键必须要有‘name’和‘value’

delete_cookie(name):删除cookie信息,name是要删除的cookie名称

delete_all_cookies():删除所有cookie信息

一般就add_cookie比较常用。可以用这个来绕过登录。下面来看用cookie登录百度的实例

因为很多网站现在通过selenium去模拟登录的话,都会有安全提示,要求验证是否本人登录啥的。所以先通过手动登录一下来拿到cookie。然后再来实验绕过登录。

打开百度首页,点击登录按钮跳转到登录页面,把用户名密码输完了之后。F12呼出开发者工具,然后点击登录。

登录成功后,找到www.baidu.com这个请求。看下右侧然后往下拉

找到Cookie。我们需要的是最后BDUSS键值对的信息。

from selenium import webdriver
dr = webdriver.Firefox()
dr.maximize_window()
dr.implicitly_wait(10)
dr.get('https://www.baidu.com/')
dr.add_cookie({'name':'BDUSS','value':'你cookie中BDUSS对应的值'})
dr.get('https://www.baidu.com/')

我这边是成功绕过了登录。需要注意的是add_cookie()传入的字典一定要带‘name’和‘value’这两样。另外需要先get()一下想要设置cookie的网站,不然会报错,因为不知道这个cookie是给哪个网站的。

add_cookie也可以这样写

co = {'name':'BDUSS','value':'你cookie中BDUSS对应的值'}
dr.add_cookie(cookie_dict=co)

add_cookie其实还有一些其他参数可以用。如果用了全都直接放在方法里看起来很不方便。所以一般都是建一个字典,然后用cookie_dict这个参数去接收

python3+selenium入门13-操作cookie的更多相关文章

  1. Selenium入门6 操作元素,获取元素属性

    取元素的text,属性get_attribute,标签名tag_name 操作元素:send_keys输入,click点击,submit提交,clear清除输入 状态判断:is_display,is_ ...

  2. python3+selenium入门06-浏览器操作

    WebDriver主要提供元素操作的方法,但也提供了一些关于浏览器操作的方法,比如设置浏览器大小,浏览器前进,后退,刷新等 设置浏览器大小 有时候需要设置浏览器大小,比如访问收集网页,设置浏览器大小跟 ...

  3. python3+selenium入门05-元素操作及常用方法

    学习了元素定位之后,来看一些元素的操作,还有一些常用的方法 clear()清空输入框内容 click()点击 send_keys()键盘输入 import time from selenium imp ...

  4. Selenium入门13 cookie的增删改查

    cookie的增删改查: 查询:get_cookies()查询所有cookie,get_cookie(cookie的name)获取单个cookie 删除:delete_cookie(cookie的na ...

  5. python3+selenium入门01-环境搭建

    作为一个测试,在最近两年应该有明显的感觉.那就是工作变的难找,要求变的高了,自动化测试,性能测试等.没有自动化测试能力,只会点点点工作难找不说,工资也不高.所以还是要学习一些技术.首先要学习一门编程语 ...

  6. python3 selenium 鼠标悬停操作

    使用场景: 测试过程中有些元素隐藏在某些元素下面,需要鼠标悬停,才会看到 使用方法: # 定位元素hover_element = driver.find_element_by_css_selector ...

  7. python3+selenium入门16-窗口截图

    有时候需要把一些浏览器当前窗口截图下来,比如操作抱错的时候.WebDriver类下.get_screenshot_as_file()方法可窗口截图,需要传入一个截图文件名的路径.window要用\\当 ...

  8. python3+selenium入门15-执行JavaScript

    有时有些功能需要通过js来执行,比如拖动浏览器的滚动条.通过execute_script()方法可以执行js的代码 window.scrollTo()可以传两个参数,第一个参数是下方滚动条的位置,第二 ...

  9. python3+selenium入门12-警告框处理

    在WebDriver中要处理JS生成的alert.confirm以及prompt,需要使用到switch_to_alert()定位到alert/confirm/prompt,然后再使用text.acc ...

随机推荐

  1. uby on rails 用户密码加密

    运行环境: rails 4.2.1                    ruby 2.0.0p481                   mysql(支持多种数据库) 在实际的项目中,需要注意对用户 ...

  2. ibatis项目启动报错The string "--" is not permitted within comments【原】

    该错误主要就是因为xml中<!-- [注释]--> 注释与-->之间没有空格造成xml解析错误 sqlMapConfig.xml内容如下 <?xml version=" ...

  3. 原生JavaScript运动功能系列(一):运动功能剖析与匀速运动实现

    在我们日常生活中运动就是必不可少的部分,走路.跑步.打篮球等.在网页交互设计上运动也是必不可少的部分,创建的网站交互设计运动模块有轮播图,下拉菜单,还有各种炫酷的游戏效果都跟运动密切相关.所以很重要, ...

  4. Python实现代理模式

    from abc import ABCMeta, abstractmethod NOT_IMPLEMENTED = "You should implement this." cla ...

  5. Ubuntu Server Download

    点击查看所有版本(中国站点) http://mirror.lzu.edu.cn/ubuntu-releases/

  6. SQL Server进阶(八)查询——开窗函数、四大排名函数、透视数据、逆透视数据

    概述 ROW_NUMBER() OVER(PARTITION BY CustId ORDER BY ID DESC) https://www.jb51.net/article/75533.htm 开窗 ...

  7. C# "XXX.XmlSerializers”的程序集未能加载到..

    解决办法,进入Debug目录, 1.如果X86平台 sgen xxx.exe /c:"/platform:x86" 2.不考虑平台 sgen xxx.exe 3.生成前事件命令行, ...

  8. luogu 2704 炮兵阵地 状压dp

    状压的基础题吧 第一次看感觉难上天,后来嘛就.. 套路:先根据自身状态筛出可行状态,再根据地图等其他限制条件筛选适合的状态加入答案 f i,j,k 分别代表 行数,本行状态,上行状态,再累加答案即可 ...

  9. Frameset 框架

      <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.c ...

  10. 【Vue】中 $attrs 中的使用方法

    vue官网是这样介绍的: 包含了父作用域中不作为 prop 被识别 (且获取) 的特性绑定 (class 和 style 除外).当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 ( ...