1.python+selenium利用cookie,跳过验证码直接登录
方法1
在登录时,叫代码等待一段时间,然后手动输入验证码
# coding:utf-8
from selenium import webdriver
import time
url = 'http://192.168.XXX:7001/AXXXse'
driver = webdriver.Chrome()
driver.get(url) # 进入登录首页
driver.maximize_window() # 窗口最大化 time.sleep(3)
driver.find_element_by_id('j_username').send_keys('admin') #输入账号
driver.find_element_by_id('j_password').send_keys('abc123456') # 输入密码
time.sleep(10) # 等待10s,利用这段空隙,手动输入验证码 driver.find_element_by_xpath(".//*[@id='login-tabs-item']/div/div[2]/div/div[1]/div/a[1]").click()
time.sleep(3) driver.quit()
方法2
利用cookie记录登录状态,也就是跳过登录
(1)利用方法1获取登录前和登录后的cookie信息
# coding:utf-8
from selenium import webdriver
import time
url = 'http://192.168XXX:7001/AXXase'
driver = webdriver.Chrome()
driver.delete_all_cookies() # 打开浏览器时先清除浏览器存在的cookie信息
driver.get(url) # 进入登录首页
driver.maximize_window() # 窗口最大化
cookie1 = driver.get_cookies() # 获取登录前cookie
print(cookie1) # 打印登录前cookie信息
time.sleep(3)
driver.find_element_by_id('j_username').send_keys('admin') #输入账号
driver.find_element_by_id('j_password').send_keys('abc123456') # 输入密码
time.sleep(10) # 等待10s,利用这段空隙,手动输入验证码 driver.find_element_by_xpath(".//*[@id='login-tabs-item']/div/div[2]/div/div[1]/div/a[1]").click()
time.sleep(3) cookie2 = driver.get_cookies() # 获取登录后cookie
print(cookie2) # 打印登录后cookie信息 driver.quit()
得到如下cookie信息
登录前
[{'domain': '192.168.XXX',
'httpOnly': True,
'name': 'JSESSIONID',
'path': '/',
'secure': False,
'value': 'DPKJhdKJ9Q6vP8KTpSqQq3hn1vJ4PlQpRBp25NXJKH2cXyx7LCGb!-1802342537'}] 登录后
[{'domain': '192.168.XXX',
'expiry': 1512457146,
'httpOnly': False,
'name': '49BAC005-7D5B-4231-8CEA-16939BEACD67',
'path': '/ApprBase',
'secure': False,
'value': 'admin'}, {'domain': '192.168.XXX',
'httpOnly': True,
'name': 'JSESSIONID',
'path': '/',
'secure': False,
'value': 'WhtVhdKZXLNDLXD0Vw8106yL776ynQ1v4G17GLgnfmggRghtMW4n!-1802342537'}]
(2)把登录后的cookie写进浏览器
# coding:utf-8
from selenium import webdriver
import time
url = 'http://192.168.XXX:7001/AXXase'
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.delete_all_cookies() # 清除cookie driver.get(url)
driver.maximize_window()
# 添加cookie
c1 = {'domain': '192.16XXX',
'expiry': 1512457146,
'httpOnly': False,
'name': '49BAC005-7D5B-4231-8CEA-16939BEACD67',
'path': '/ApXXe',
'secure': False,
'value': 'admin'}
c2 = {'domain': '192.16XX3',
'httpOnly': True,
'name': 'JSESSIONID',
'path': '/',
'secure': False,
'value': 'QJrFhdZBKSCZtZFDVgvnDxTyKxzpP8YQThyPKnZ8RwCGWKyKJLvH!-1802342537'} driver.add_cookie(c1)
driver.add_cookie(c2)
time.sleep(3)
# 再次登录
driver.get(url)
time.sleep(3)
driver.quit()
1.python+selenium利用cookie,跳过验证码直接登录的更多相关文章
- python+selenium利用cookie记住密码
先上代码 1 from selenium import webdriver 2 from time import sleep 3 4 dr = webdriver.Chrome() 5 dr.get( ...
- 自动化测试使用cookie跳过验证码
准备工具: fiddler Python+selenium 安装fidder fidder官方下载地址 fidder首次安装需要设置才能抓取https参考如下 fidder设置抓取https 开始 1 ...
- requests库使用:通过cookie跳过验证码登录,并用Session跨请求保持cookie
拿我平时测试的一个系统为例,从UI层面来说必须先登录才可以进行后续操作,但是我在测试接口文档提供的接口时,发现并不需要登录,每个接口只要传参就可以正常返回.原因是我们这边专门弄了一个接口包来统一管理常 ...
- python+selenium操作cookie
WebDriver提供了操作Cookie的相关方法,可以读取.添加和删除cookie信息. WebDriver操作cookie的方法: get_cookies(): 获得所有cookie信息. get ...
- 【Python web自动化】之读取配置文件参数,利用cookie返回值进行跳过验证码进行登录操作
当进行Python的Web自动化时,会涉及到验证码问题,该如何跳过执行呢,下面请看代码: 1.首先新建配置文件*.ini格式 config.ini [db] #基础地址: baseurl = http ...
- Python+Selenium+PIL+Tesseract真正自动识别验证码进行一键登录
Python 2.7 IDE Pycharm 5.0.3 Selenium:Selenium的介绍及使用,强烈推荐@ Eastmount的博客 PIL : Pillow-3.3.0-cp27-cp27 ...
- Python+selenium+pil+tesseract实现自动识别验证码
一.环境搭建准备: 1.Python下载,安装以及环境配置 2.IDE pycharm 工具下载,安装 3.ie浏览器 4.selenium 5.pil:pil第三方库的下载,win下安装whl文件, ...
- Python+Selenium 利用ID,XPath,tag name,link text,partial link text,class name,css,name定位元素
使用firefox浏览器,查看页面元素,我们以“百度网页”为示例 一.ID定位元素 利用find_element_by_id()方法来定位网页元素对象 ①.定位百度首页,输入框的元素 ②.编写示 ...
- Python+Selenium学习--cookie处理
场景 有时候我们需要验证浏览器中是否存在某个cookie,因为基于真实的cookie 的测试是无法通过白盒和集成测试完成的.webdriver 可以读取.添加和删除cookie 信息.webdrive ...
随机推荐
- SQL 中【NULL】和【无】烦躁的问题
很烦躁,烦躁的很,总结一下. 先简单的说下: NULL : 不确定的东西 无 :没有东西 复杂的见下文....... 一 .null值 下面举个最简单的例子,平常工作当中肯定比这个sq ...
- Linux root用户下不能打开Google-chrome的解决办法
在root下打开chrome会出现no sandbox的错误 解决方案: 1.找到google-chrome文件 在目录/opt/google/chrome 下 2.使用gedit打开该文件 最后一行 ...
- 向SVN添加新项目的实践笔记
假设已经安装好SVN服务器端和客户端 1.在SVN上新建文件夹: 2.进入工程项目所在文件夹,鼠标右键菜单选择[SVN Checkout...],弹出如下对话框 3.点击第2步对话框OK按钮,弹出如下 ...
- linux常用命令:wc 命令
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...
- MyEclipse 相关设置
1. MyElipse复制项目后,修改项目的发布名称的方式.右击你的项目,选择 properties -- > MyElipse -- > web,然后修改名称即可. 2. IDE查看源代 ...
- Oracle 11g调用函数几种常用方法
1. 该函数接受3个可选参数,返回3个数字的和 CREATE OR REPLACE FUNCTION add_three_numbers ( a NUMBER:=0, b NUMBER:=0, c N ...
- CentOS随笔 - 4.CentOS7安装MySql 5.5.60(下载 tar 方式安装)
前言 转帖请注明出处: http://www.cnblogs.com/Troy-Lv5/ 由于公司也有php+mysql的项目, 所以今天也把Mysql装了一遍. 为了与以前的程序和数据库兼容, 这次 ...
- 解决window.open被拦截问题
最近在项目中有一个在浏览器中新开一个窗口的需求,如果不需要做任何的判断,只是直接新开窗口的话,用a标签即可. 但是如果需要做一些判断再新开一个窗口的话,就不能使用a标签了.window.open确实可 ...
- c++中的字符集与中文
就非西欧字符而言,比如中国以及港澳台,在任何编程语言的开发中都不得不考虑字符集及其表示.在c++中,对于超过1个字节的字符,有两种方式可以表示: 1.多字节表示法:通常用于存储(空间效率考虑). 2. ...
- git和github的简单配合使用
1.安装git,TortoiseGit. 2.用帐号A登陆github,建立一个版本仓库test1.用默认值创建就可以了. 3.在本机用TortoiseGit克隆仓库test1.直接选https开头的 ...