python+selenium的环境准备,请自行安装完成,这里直接贴代码,方便做项目时直接使用。

 import time
from selenium import webdriver
from PIL import Image #创建一个浏览器对象
browser = webdriver.Chrome()
browser.maximize_window()
#打开登录页面
browser.get('http://www.chaojiying.com/user/login/') #定位到账号的输入框
id_input = browser.find_element_by_xpath('//input[@name="user"]')
time.sleep(2)
id_input.send_keys('*******') #定位到密码输入框,输入密码
pw_input = browser.find_element_by_xpath('//input[@name="pass"]')
pw_input.send_keys('*****') """
识别验证码
"""
browser.save_screenshot('login.png') #获取验证码元素的位置
yzm = browser.find_element_by_xpath('//img[@src="/include/code/code.php?u=1"]')
#获取验证码的坐标
loc = yzm.location
#获取验证码图片的宽高
size = yzm.size print("坐标:",loc)
print("宽高",size) #获取验证码位置
left = loc['x']
top = loc['y']
bottom = top+size['height']
right = left+size['width'] #打开页面截图
page_pic = Image.open('login.png')
yzm_pic = page_pic.crop((left,top,right,bottom)) #这里需要传入一个元组 yzm_pic.save('yzm.png') #调用第三方接口识别验证码
from chaojiying import Chaojiying
#读取文件内容
with open('yzm.png','rb') as f:
pic1 = f.read() #调用第三方打码平台接口识别验证码
yz = Chaojiying(username='******', password='******', soft_id='*****')
res = yz.post_pic(pic1,codetype='').get('pic_str') #1902 验证码类型
print('识别的结果:',res) #输入验证码
browser.find_element_by_xpath('//input[@name="imgtxt"]').send_keys(res) time.sleep(5)
#点击登录按钮
browser.find_element_by_xpath('//input[@value="登录"]').click() time.sleep(5)
browser.close()

关于调用第三方平台接口的方法,请查看上一节文章代码:https://www.cnblogs.com/benben-wu/p/10487998.html

python+selenium,实现带有验证码的自动化登录功能的更多相关文章

  1. Python Selenium Cookie 绕过验证码实现登录

    Python Selenium Cookie 绕过验证码实现登录 之前介绍过博客园的通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍 1.1. ...

  2. 使用Python + Selenium破解滑块验证码

    在前面一篇博客<使用 Python + Selenium 打造浏览器爬虫>中,我介绍了 Selenium 的基本用法和爬虫开发过程中经常使用的一些小技巧,利用这些写出一个浏览器爬虫已经完全 ...

  3. python+selenium实现百度关键词搜索自动化操作

    缘起 之前公司找外面网络公司做某些业务相关关键词排名,了解了一下相关的情况,网络公司只需要我们提供网站地址和需要做的关键词即可,故猜想他们采取的方式应该是通过模拟用户搜索提升网站权重进而提升排名. 不 ...

  4. windiows下搭建python+selenium+unittest+Chrome的Web自动化环境

    一.selenium.unittest概念 Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架.它是一款用于运行端到端功能测试的超强工具.您可以使用多个编程语言编写测试,并且 ...

  5. Python&Selenium&pytest借助allure生成自动化测试报告

    一.摘要 本篇博文将介绍Python和Selenium进行自动化测试时,如何借助allure生成自动化测试报告 二.环境配置 首先python环境中安装pytest和pytest_allure_ada ...

  6. python+selenium识别图片验证码

    import timeimport pytesseractfrom PIL import Image, ImageEnhancefrom selenium import webdriver url = ...

  7. python+selenium进行简单验证码获取

    # _*_ coding:utf-8 _*_from PIL import Imagefrom selenium import webdriverimport pytesseractimport ti ...

  8. python+selenium滑动式验证码解决办法

    from selenium.webdriver import ActionChains action = ActionChains(driver) source=driver.find_element ...

  9. 自动化选课(Python + selenium

    ​ 前几天听到朋友说自己选课事情,突发奇想想要搞这样一个东西,但是由于各种原因只做到以下的完成度,具体的情况也会在解释的最后留下.这个只适用于曲师大的教务系统,因为用的这个系统来进行的一个调试,对于其 ...

随机推荐

  1. 如何使用onclick方式添加多个事件回调函数

    通过给onclcik包裹一个函数进行上下文的切换与参数的传递: function addClcikEvent(el, fn){ if(el.onclick){ var _back = el.oncli ...

  2. CLOSE_WAIT状态的原因与解决方法(转载留自己看)

    这个问题之前没有怎么留意过,是最近在面试过程中遇到的一个问题,面了两家公司,两家公司竟然都面到到了这个问题,不得不使我开始关注这个问题.说起CLOSE_WAIT状态,如果不知道的话,还是先瞧一下TCP ...

  3. Java开发想尝试大数据和数据挖掘,如何规划学习?

    大数据火了几年了,但是今年好像进入了全民大数据时代,本着对科学的钻(zhun)研(bei)精(tiao)神(cao),我在17年年初开始自学大数据,后经过系统全面学习,于这个月跳槽到现任公司. 现在已 ...

  4. Harbor--企业级项目管理

    Harbor基本介绍: Harbor 是 Vmware 公司开源的,企业级的Docker仓库管理项目 支持建立多个仓库 支持安全特性, 如用户管理,权限控制和 参考http://www.cnblogs ...

  5. Xmodem协议简介

    1.      Xmodem协议 1.1.    简介 在上一章中,BootLoader和APP在串口下的升级其实都用到了一种文件传输协议,即Xmodem协议,该协议因其简单,易实现和使用的特点在很多 ...

  6. RoR- Database setup& SQLite ... Migrations

    *rails uses SQLite for database by default *Built-in command-line DB viewer *Self-contained,server-l ...

  7. PTA地下迷宫探索

    地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式.地道网是房连房.街连街.村连村的地下工事,如下图所示. 我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智. ...

  8. 5.0-uC/OS-III时间管理

    1.时间管理 uC/OS-III为用户提供了与时间管理相关的服务. 在uC/OS-III中设置了能提供时基中断的中断源.该中断源提供 10Hz 到 1000Hz 之间的中断(需设置OS_CFG_APP ...

  9. Unity骨骼动画资源解析与优化

    一,背景 最近发现项目的动画文件有点大,不光内存大,而且文件也很大,所以从这2个方面下手处理 二,动画文件大小优化 为了优化动画文件大小,我们可以先分析下文件,Ctrl+D将动画文件从FBX拷贝出来, ...

  10. JS构造函数原理与原型

    1.创建对象有以下几种方式: ①.var obj = {}; ②.var obj = new Object(); ③.自定义构造函数,然后使用构造函数创建对象 [构造函数和普通函数的区别:函数名遵循大 ...