python3.8.1+selenium解决登录滑块验证的问题,先给大家分享一个效果图,感觉不错,可以参考实现代码。

这里的滑块是qq邮箱的截图,如图所示,可以作为同类滑块验证的参考。

"""

auther = "zwb",这里使用的python版本是3.8.1,selenium版本是3.141.0,webdriver是谷歌,版本是81.0.4044.138(正式版本) (64 位)

webdriver各版本对应的浏览器下载地址:https://npm.taobao.org/mirrors/chromedriver,这个脚本是以qq邮箱登录为例

"""

import unittest

from selenium import webdriver

from time import *

from selenium.webdriver import ActionChains

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.support.wait import WebDriverWait

def get_track(distance):

track = []

current = 0

mid = distance * 3 / 4

t = 0.2

v = 0

while current < distance: # 定义循环条件,如果为真则继续,为假则不继续

if current < mid: # 正常的if...else结构

a = 2 # 定义加速度

else:

a = -3

v0 = v

v = v0 + a * t # 定义移动速度,哈哈哈,v = v0+at

move = v0 * t + 1 / 2 * a * t * t # 定义每次滑块移动的距离,也是如此.s=v0t+1/2at**2,hahha,写这个的是高手,活学活用

current += move # 每次遍历得到的move用current保存起来

track.append(round(move)) # 将得到的move取整添加的列表中,每次都添加到列表尾部,可以用extend多次添加和insert添加到自己想要的位置

return track # 返回每次移动的轨迹列表

class testUiProject(unittest.TestCase):

def setUp(self):

self.driver = webdriver.Chrome() # 定义驱动器

self.url = "https://mail.qq.com/" # 定义需要访问的地址url

self.driver.implicitly_wait(30) # 设置隐式等待时间

self.driver.set_script_timeout(45) # 设置异步脚本加载超时时间

self.driver.set_page_load_timeout(45) # 设置页面加载超时时间

self.driver.maximize_window() # 设置页面窗口最大化

def test_First_Case(self):

global iframe, start_position # 函数内部定义全局变量

driver = self.driver # 定义浏览器驱动

driver.get(self.url) # 得到url打开网站

username = "qq邮箱账号" # 定义用户账户

password ="qq密码" # 定义用户密码

driver.switch_to.frame("login_frame") # 打开网页后,查看是否有iframe标签,如果有则需要跳转到该标签后进行定位,这里使用id定位

self.driver.find_element_by_xpath("//*[@id='u']").send_keys(username) # 传入用户账号

self.driver.find_element_by_xpath("//*[@id='p']").send_keys(password) # 传入用户密码

self.driver.find_element_by_id("login_button").click() # 点击登录按钮

sleep(2) # 等待资源加载

# driver.switch_to.default_content() 切换到顶层标签,如果之前的iframe标签和现在iframe标签不一致则需要切换,否则不需要

# driver.switch_to.frame("tcaptcha_iframe")

WebDriverWait(driver, 5, 0.5).until(

EC.presence_of_element_located((By.ID, "tcaptcha_drag_thumb")) # 等待图片加载出来

)

try:

start_position = driver.find_element_by_id("tcaptcha_drag_thumb") # 得到滑块的初始位置,并进行异常处理

except Exception as e:

print("get button failed: ", e)

sleep(2) # 等待资源加载

distance = 300 # 这里根据qq邮箱的初始窗口大小得到的宽度取值

while 1:

action = ActionChains(driver) # 定义ActionChains

action.click_and_hold(start_position).perform() # 点击初始滑块位置并保持不释放

action.reset_actions() # 清除之前的action

track = get_track(distance) # 调用移动轨迹函数并传入距离distance,distance根据定位的滑块窗口大小自己设定

for i in track: # 利用循环模拟滑块移动轨迹,xoffset是横向移动,yoffset是纵向移动,这里不纵向移动,所以yoffset=0

action.move_by_offset(xoffset=i, yoffset=0).perform()

action.reset_actions() # 清除之前的action

sleep(0.5)

# action.release().perform() 释放鼠标保持点击状态,这句话可以根据需要保留,目前这里不需要保留,保留会使得循环提前终止

sleep(5)

def tearDown(self):

self.driver.quit()

if __name__ == "__main__":

unittest.main()

总结

到此这篇关于python3.8.1+selenium解决登录滑块验证的问题的文章就介绍到这了,更多相关python selenium 登录滑块验证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

python实现滑块验证功能_python3.8.1+selenium实现登录滑块验证功能相关推荐

  1. php js记住密码功能,jquery.cookie.js实现用户登录保存密码功能的方法_jquery

    本文实例讲述了jquery.cookie.js实现用户登录保存密码功能的方法.分享给大家供大家参考,具体如下: 需要导入的js有jquery.js和jquery.cookie.js 在页面加载时首先尝 ...

  2. python网页自动填写_Windows下使用python3 + selenium实现网页自动填表功能

    因为工作原因,需要将xls文件的数据录入到网上.因为数据量太多,而且以后时不时还需要用上,Ctrl+C,Ctrl+V不是长久之计.所以萌生一个想法,写一个工具,用于把xls文件的数据录入到网站上. 笔 ...

  3. python自动填表格_Windows下使用python3 + selenium实现网页自动填表功能

    因为工作原因,需要将xls文件的数据录入到网上.因为数据量太多,而且以后时不时还需要用上,Ctrl+C,Ctrl+V不是长久之计.所以萌生一个想法,写一个工具,用于把xls文件的数据录入到网站上. 笔 ...

  4. ajax 验证成功 转跳,利用ajax实现登录:验证完用户信息后如何保存用户信息并实现跳转...

    代码如下: 前台: $.ajax({ url : '../servlet/Login_Do', data : { name : $('#loginForm input[name=name]').val ...

  5. Python爬虫:爬取百度图片(selenium模拟登录,详细注释)

    1.驱动下载 百度图片这种网站是动态的,即并不是网页中的内容全部存储在源代码中,而是不停地动态刷新,所以需要使用selenium模拟浏览器登录,除了安装selenium库之外,还需要针对不同地浏览器安 ...

  6. 复习Java第二个项目仿QQ聊天系统 03(两种通信类、登录以及注册功能完善) Java面试题并发编程相关知识生活【记录一个咸鱼大学生三个月的奋进生活】025

    记录一个咸鱼大学生三个月的奋进生活025 复习Java(仿QQ聊天系统03两种通信类.登录以及注册功能完善) TcpSocket类(与服务器进行通信) Server类(服务器类) TcpMessage ...

  7. python 装饰器实现事件绑定_Python装饰器实现几类验证功能做法实例

    最近新需求来了,要给系统增加几个资源权限.尽量减少代码的改动和程序的复杂程度.所以还是使用装饰器比较科学 之前用了一些登录验证的现成装饰器模块.然后仿写一些用户管理部分的权限装饰器. 比如下面这种 调 ...

  8. python字典实现关键字检索_如何实现搜索框的关键词提示功能

    我们都使用过主流的搜索引擎,谷歌. bing,当然还有搜狗.百度之类.当你搜索某一关键词时,它会贴心在下拉框补全一些热门关键词,像下图这样: 搜索关键词提示 你点击某一关键词,页面就直接跳转到结果页面 ...

  9. python爬虫代理的使用_从零开始写Python爬虫 --- 2.4 爬虫实践:代理的爬取和验证...

    爬网站的时候,由于各种原因,ip被锁了,这个时候我们就需要通过代理来突破封锁.网上有很多代理网站,付费和免费的都有,这次我们就来写一个scrapy爬虫,爬一些免费的代理下来用. 目标分析: 本次爬取了 ...

最新文章

  1. 16张思维导图+学习路线图,囊括所有Python基础,可打印
  2. 互联网思维-标签思维(1)
  3. (传送门)微信公众号推送文章(个人认为未来可能对我有用的部分)
  4. 使用PowerMock模拟构造函数
  5. 【Uva - 10935】 Throwing cards away I (既然是I,看来还有Ⅱ、Ⅲ、Ⅳ?)(站队问题队列问题)
  6. tensorflow线性回归基础函数
  7. 银联的bankall_阿尔法银行罗马尼亚分行开始受理银联卡
  8. Android开发笔记(二十六)Java的容器类
  9. 如何提高lstm的预测精度_直线电机点胶机如何提高点胶精度及生产效率?
  10. [UE4]Size Box
  11. ADC的指标详细定义,SNR,以下内容无关: -------------------------------------------分割线----------------SNDR,SFDR,THD等
  12. Pyside2中嵌入Matplotlib的绘图并保存(指定Graphics View)
  13. 激光雷达SLAM三维建图、点云算法 点云处理 自己写的算法 没用任何现成的库文件
  14. linux centos安装配置prosody
  15. 科学大家谈 | 全球著名蛋白质工程学家——张阳
  16. 字节跳动面试真题:Redis为什么快?
  17. Python:SM4
  18. Excel数据透视表只能求和运算?快来学习求差运算小技巧
  19. 开始记录深度学习工作站的学习之路
  20. 联邦滤波matlab程序,联邦滤波器仿真

热门文章

  1. django xadmin 1不在可用的选项中
  2. selenium自动化之鼠标操作
  3. Codeforces 486D. Valid Sets
  4. 13.while循环
  5. BootStrap_01之全局样式
  6. javascript中最最最常用的方法封装
  7. WordPress网站的问题
  8. hadoop hive安装手记(转)
  9. WWF(Windows Workflow Foundation)开发环境的建立。 .NET 技术前瞻,WWF,Windows,Workflow,Foundation...
  10. 实探全球第九大超算中心:温水冷却节能30% 正寻求新突破