方法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,跳过验证码直接登录的更多相关文章

  1. python+selenium利用cookie记住密码

    先上代码 1 from selenium import webdriver 2 from time import sleep 3 4 dr = webdriver.Chrome() 5 dr.get( ...

  2. 自动化测试使用cookie跳过验证码

    准备工具: fiddler Python+selenium 安装fidder fidder官方下载地址 fidder首次安装需要设置才能抓取https参考如下 fidder设置抓取https 开始 1 ...

  3. requests库使用:通过cookie跳过验证码登录,并用Session跨请求保持cookie

    拿我平时测试的一个系统为例,从UI层面来说必须先登录才可以进行后续操作,但是我在测试接口文档提供的接口时,发现并不需要登录,每个接口只要传参就可以正常返回.原因是我们这边专门弄了一个接口包来统一管理常 ...

  4. python+selenium操作cookie

    WebDriver提供了操作Cookie的相关方法,可以读取.添加和删除cookie信息. WebDriver操作cookie的方法: get_cookies(): 获得所有cookie信息. get ...

  5. 【Python web自动化】之读取配置文件参数,利用cookie返回值进行跳过验证码进行登录操作

    当进行Python的Web自动化时,会涉及到验证码问题,该如何跳过执行呢,下面请看代码: 1.首先新建配置文件*.ini格式 config.ini [db] #基础地址: baseurl = http ...

  6. Python+Selenium+PIL+Tesseract真正自动识别验证码进行一键登录

    Python 2.7 IDE Pycharm 5.0.3 Selenium:Selenium的介绍及使用,强烈推荐@ Eastmount的博客 PIL : Pillow-3.3.0-cp27-cp27 ...

  7. Python+selenium+pil+tesseract实现自动识别验证码

    一.环境搭建准备: 1.Python下载,安装以及环境配置 2.IDE pycharm 工具下载,安装 3.ie浏览器 4.selenium 5.pil:pil第三方库的下载,win下安装whl文件, ...

  8. Python+Selenium 利用ID,XPath,tag name,link text,partial link text,class name,css,name定位元素

    使用firefox浏览器,查看页面元素,我们以“百度网页”为示例 一.ID定位元素    利用find_element_by_id()方法来定位网页元素对象 ①.定位百度首页,输入框的元素 ②.编写示 ...

  9. Python+Selenium学习--cookie处理

    场景 有时候我们需要验证浏览器中是否存在某个cookie,因为基于真实的cookie 的测试是无法通过白盒和集成测试完成的.webdriver 可以读取.添加和删除cookie 信息.webdrive ...

随机推荐

  1. SQL 中【NULL】和【无】烦躁的问题

    很烦躁,烦躁的很,总结一下. 先简单的说下: NULL   : 不确定的东西 无       :没有东西 复杂的见下文....... 一 .null值 下面举个最简单的例子,平常工作当中肯定比这个sq ...

  2. Linux root用户下不能打开Google-chrome的解决办法

    在root下打开chrome会出现no sandbox的错误 解决方案: 1.找到google-chrome文件 在目录/opt/google/chrome 下 2.使用gedit打开该文件 最后一行 ...

  3. 向SVN添加新项目的实践笔记

    假设已经安装好SVN服务器端和客户端 1.在SVN上新建文件夹: 2.进入工程项目所在文件夹,鼠标右键菜单选择[SVN Checkout...],弹出如下对话框 3.点击第2步对话框OK按钮,弹出如下 ...

  4. linux常用命令:wc 命令

    Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...

  5. MyEclipse 相关设置

    1. MyElipse复制项目后,修改项目的发布名称的方式.右击你的项目,选择 properties -- > MyElipse -- > web,然后修改名称即可. 2. IDE查看源代 ...

  6. Oracle 11g调用函数几种常用方法

    1. 该函数接受3个可选参数,返回3个数字的和 CREATE OR REPLACE FUNCTION add_three_numbers ( a NUMBER:=0, b NUMBER:=0, c N ...

  7. CentOS随笔 - 4.CentOS7安装MySql 5.5.60(下载 tar 方式安装)

    前言 转帖请注明出处: http://www.cnblogs.com/Troy-Lv5/ 由于公司也有php+mysql的项目, 所以今天也把Mysql装了一遍. 为了与以前的程序和数据库兼容, 这次 ...

  8. 解决window.open被拦截问题

    最近在项目中有一个在浏览器中新开一个窗口的需求,如果不需要做任何的判断,只是直接新开窗口的话,用a标签即可. 但是如果需要做一些判断再新开一个窗口的话,就不能使用a标签了.window.open确实可 ...

  9. c++中的字符集与中文

    就非西欧字符而言,比如中国以及港澳台,在任何编程语言的开发中都不得不考虑字符集及其表示.在c++中,对于超过1个字节的字符,有两种方式可以表示: 1.多字节表示法:通常用于存储(空间效率考虑). 2. ...

  10. git和github的简单配合使用

    1.安装git,TortoiseGit. 2.用帐号A登陆github,建立一个版本仓库test1.用默认值创建就可以了. 3.在本机用TortoiseGit克隆仓库test1.直接选https开头的 ...