方法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. php深入学习

    关于PHP程序员解决问题的能力 http://rango.swoole.com/archives/340 深入理解PHP内核 by xuhong大牛 http://www.php-internals. ...

  2. kendo datetimepicker

    @(Html.Kendo().DatePicker() .Name("yearCalendar") .Value(DateTime.Now) .Start(CalendarView ...

  3. STA分析(一) setup and hold

    timing check可以分为Dynamic Timing Analysis(Post_sim)和Static Timing Analysis STA:可以分析的很全面:仿真速度也很快:可以分析控制 ...

  4. 《算法C语言实现》————三道题目

    1.对于N = 10,100和1000,记录你的运行环境中分别运行一下程序所花费的时间.(用python) import datetime global a a = 0 def time_1(s): ...

  5. Java一元操作符++详解

    废话不多说,直接上代码. package com.coshaho.learn; /** * * OperatorLearn.java Create on 2016-11-13 下午8:38:15 * ...

  6. node.js cookie session使用教程

    众所周知,HTTP 是一个无状态协议,所以客户端每次发出请求时,下一次请求无法得知上一次请求所包含的状态数据,如何能把一个用户的状态数据关联起来呢? cookie 首先产生了 cookie 这门技术来 ...

  7. 启动Tomcat服务时,出现org.apache.catalina.startup.VersionLoggerListener报错

    启动Tomcat服务时,出现org.apache.catalina.startup.VersionLoggerListener报错解决办法:打开Tomcat安装后目录,进入conf文件夹,找到配置文件 ...

  8. wamp下配置多域名和访问路径的方法

    wamp下配置多域名和访问路径的方法 1.到安装目录下,打开配置httpd.confD:\wamp\bin\apache\Apache2.2.21\conf\httpd.conf也可以通过wamp图标 ...

  9. python网络编程之一

    套接字的详细介绍会在另一篇博文指出,此片博文主要是python套接字的简单客户端编写. 两种套接字介绍: 面向连接的套接字:面向连接的套接字提供序列化,可靠的和不重复的数据交付.面向连接是可靠的传输, ...

  10. SNMP学习笔记之SNMP报文协议详解

    0x00 简介 简单网络管理协议(SNMP)是TCP/IP协议簇的一个应用层协议.在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案:由于SNMP的简单 ...