python3.8.1+selenium实现登录滑块验证功能_python

来源:脚本之家  责任编辑:小易  

代码如下from winioctlcon import*from win32file import*from ctypes import*from ctypes.wintypes import*import win32apiimport win32fileimport winioctlconimport win32conIDE_ATA_IDENTIFY=0xECDFP_SEND_DRIVE_COMMAND=0x0007c084class_IDEREGS(Structure):fields_=("bFeaturesReg",BYTE),#特征寄存器(用于SMART命令)("bSectorCountReg",BYTE),#扇区数目寄存器("bSectorNumberReg",BYTE),#开始扇区寄存器("bCylLowReg",BYTE),#开始柱面低字节寄存器("bCylHighReg",BYTE),#开始柱面高字节寄存器("bDriveHeadReg",BYTE),#驱动器/磁头寄存器("bCommandReg",BYTE),#指令寄存器("bReserved",BYTE),#保留IDEREGS=_IDEREGS#*PIDEREGS,*LPIDEREGS;从驱动程序返回的状态class_DRIVERSTATUS(Structure):fields_=("bDriverError",BYTE),#错误码("bIDEStatus",BYTE),#IDE状态寄存器("bReserved",BYTE*2),#保留("dwReserved",DWORD*2),#保留DRIVERSTATUS=_DRIVERSTATUS#*PDRIVERSTATUS,*LPDRIVERSTATUS;IDE设备IOCTL输入数据结构class_SENDCMDINPARAMS(Structure):fields_=("cBufferSize",DWORD),#缓冲区字节数("irDriveRegs",IDEREGS),#IDE寄存器组("bDriveNumber",BYTE),#驱动器号("bReserved",BYTE*3),#保留("dwReserved",DWORD*4),#保留("bBuffer[1]",BYTE),#输入缓冲区(此处象征性地包含1字节)SENDCMDINPARAMS=_SENDCMDINPARAMS#*PSENDCMDINPARAMS,*LPSENDCMDINPARAMS;IDE设备IOCTL输出数据结构class_SENDCMDOUTPARAMS(Structure):fields_=("cBufferSize",DWORD),#缓冲区字节数("DriverStatus",DRIVERSTATUS),#驱动程序返回状态("bBuffer[1]",BYTE),#输入缓冲区(此处象征性地包含1字节)SENDCMDOUTPARAMS=_SENDCMDOUTPARAMS#*PSENDCMDOUTPARAMS,*LPSENDCMDOUTPARAMS;IDE的ID命令返回的数据共512字节(256个WORD),这里仅定义了一些感兴趣的项(基本上依据ATA/ATAPI-4)USHORT=c_ushortCHAR=c_charULONG=c_ulongUCHAR=c_ubyteclass Capabilities(Structure):#WORD 49:一般能力fields_=("reserved1:8",USHORT),("DMA:1",USHORT),#1=支持DMA("LBA:1",USHORT),#1=支持LBA("DisIORDY:1",USHORT),#1=可不使用IORDY("IORDY:1",USHORT),#1=支持IORDY("SoftReset:1",USHORT),#1=需要ATA软启动("Overlap:1",USHORT),#1=支持重叠操作("Queue:1",USHORT),#1=支持命令队列("InlDMA:1",USHORT),#1=支持交叉存取DMAclass FieldValidity(Structure):#WORD 53:后续字段有效性标志fields_=("CHSNumber:1",USHORT),#1=WORD 54-58有效("CycleNumber:1",USHORT),#1=WORD 64-70有效("UnltraDMA:1",USHORT),#1=WORD 88有效("reserved:13",USHORT),class MultSectorStuff(Structure):#WORD 59:多扇区读写设定fields_=("CurNumber:8",USHORT),#当前一次性可读写扇区数("Multi:1",USHORT),#1=已选择多扇区读写("reserved1:7",USHORT),class MultiWordDMA(Structure):#WORD 63:多字节DMA支持能力fields_=("Mode0:1",USHORT),#1=支持模式0(4.17Mb/s)("Mode1:1",USHORT),#1=支持模式1(13.3Mb/s)("Mode2:1",USHORT),#1=支持模式2(16.7Mb/s)("Reserved1:5",USHORT),("Mode0Sel:1",USHORT),#1=已选择模式0("Mode1Sel:1",USHORT),#1=已选择模式1("Mode2Sel:1",USHORT),#1=已选择模式2("Reserved2:5",USHORT),class PIOCapacity(Structure):#WORD 64:高级PIO支持能力fields_=("AdvPOIModes:8",USHORT),#支持高级POI模式数("reserved:8",USHORT),class MajorVersion(Structure):#WORD 80:主版本fields_=("Reserved1:1",USHORT),("ATA1:1",USHORT),#1=支持ATA-1("ATA2:1",USHORT),#1=支持ATA-2("ATA3:1",USHORT),#1=支持ATA-3("ATA4:1",USHORT),#1=支持ATA/ATAPI-4("ATA5:1",USHORT),#1=支持ATA/ATAPI-5("ATA6:1",USHORT),#1=支持ATA/ATAPI-6("ATA7:1",USHORT),#1=支持ATA/ATAPI-7("ATA8:1",USHORT),#1=支持ATA/ATAPI-8("ATA9:1",USHORT),#1=支持ATA/ATAPI-9("ATA10:1",USHORT),#1=支持ATA/ATAPI-10("ATA11:1",USHORT),#1=支持ATA/ATAPI-11("ATA12:1",USHORT),#1=支持ATA/ATAPI-12("ATA13:1",USHORT),#1=支持ATA/ATAPI-13("ATA14:1",USHORT),#1=支持ATA/ATAPI-14("Reserved2:1",USHORT),class UltraDMA(Structure):#WORD 88:Ultra DMA支持能力fields_=("Mode0:1",USHORT),#1=支持模式0(16.7Mb/s)("Mode1:1",USHORT),#1=支持模式1(25Mb/s)("Mode2:1",USHORT),#1=支持模式2(33Mb/s)("Mode3:1",USHORT),#1=支持模式3(44Mb/s)("Mode4:1",USHORT),#1=支持模式4(66Mb/s)("Mode5:1",USHORT),#1=支持模式5(100Mb/s)("Mode6:1",USHORT),#1=支持模式6(133Mb/s)("Mode7:1",USHORT),#1=支持模式7(166Mb/s)?("Mode0Sel:1",USHORT),#1=已选择模式0("Mode1Sel:1",USHORT),#1=已选择模式1("Mode2Sel:1",USHORT),#1=已选择模式2("Mode3Sel:1",USHORT),#1=已选择模式3("Mode4Sel:1",USHORT),#1=已选择模式4("Mode5Sel:1",USHORT),#1=已选择模式5("Mode6Sel:1",USHORT),#1=已选择模式6("Mode7Sel:1",USHORT),#1=已选择模式7class_IDINFO(Structure):fields_=("wGenConfig",USHORT),#WORD 0:基本信息字("wNumCyls",USHORT),#WORD 1:柱面数("wReserved2",USHORT),#WORD 2:保留("wNumHeads",USHORT),#WORD 3:磁头数("wReserved4",USHORT),#WORD 4:保留("wReserved5",USHORT),#WORD 5:保留("wNumSectorsPerTrack",USHORT),#WORD 6:每磁道扇区数("wVendorUnique",USHORT*3),#WORD 7-9:厂家设定值("sSerialNumber",CHAR*20),#WORD 20:缓冲类型("wBufferSize",USHORT),#WORD 21:缓冲大小("wECCSize",USHORT),#WORD 22:ECC校验大小("sFirmwareRev",CHAR*8),#WORD 23-26:固件版本("sModelNumber",CHAR*40),#WORD 27-46:内部型号("wMoreVendorUnique",USHORT),#WORD 47:厂家设定值("wReserved48",USHORT),#WORD 48:保留("wCapabilities",Capabilities),("wReserved1",USHORT),#WORD 50:保留("wPIOTiming",USHORT),#WORD 51:PIO时序("wDMATiming",USHORT),#WORD 52:DMA时序("wFieldValidity",FieldValidity),("wNumCurCyls",USHORT),#WORD 54:CHS可寻址的柱面数("wNumCurHeads",USHORT),#WORD 55:CHS可寻址的磁头数("wNumCurSectorsPerTrack",USHORT),#WORD 56:CHS可寻址每磁道扇区数("wCurSectorsLow",USHORT),#WORD 57:CHS可寻址的扇区数低位字("wCurSectorsHigh",USHORT),#WORD 58:CHS可寻址的扇区数高位字("wMultSectorStuff",MultSectorStuff),("dwTotalSectors",ULONG),#WORD 60-61:LBA可寻址的扇区数("wSingleWordDMA",USHORT),#WORD 62:单字节DMA支持能力("wMultiWordDMA",MultiWordDMA),("wPIOCapacity",PIOCapacity),("wMinMultiWordDMACycle",USHORT),#WORD 65:多字节DMA传输周期的最小值("wRecMultiWordDMACycle",USHORT),#WORD 66:多字节DMA传输周期的建议值("wMinPIONoFlowCycle",USHORT),#WORD 67:无流控制时PIO传输周期的最小值("wMinPOIFlowCycle",USHORT),#WORD 68:有流控制时PIO传输周期的最小值("wReserved69[11]",USHORT),#WORD 69-79:保留("wMajorVersion",MajorVersion),("wMinorVersion",USHORT),#WORD 81:副版本("wReserved82",USHORT*6),#WORD 82-87:保留("wUltraDMA",UltraDMA),("wReserved89",USHORT*167)#WORD 89-255IDINFO=_IDINFO#*PIDINFO;hDisk=win32file.CreateFile('\\\\\\\\.\\\\PhysicalDrive0',win32file.GENERIC_READ|win32file.GENERIC_WRITE,win32file.FILE_SHARE_READ|win32file.FILE_SHARE_WRITE,None,win32file.OPEN_EXISTING,0,None)print(hDisk)pSCIP=SENDCMDINPARAMS()pSCOP=SENDCMDOUTPARAMS()print(pSCIP)pSCIP.irDriveRegs.bCommandReg=IDE_ATA_IDENTIFYprint(pSCIP.irDriveRegs.bCommandReg)pSCIP.cBufferSize=0pSCIP=create_string_buffer(pSCIP)pSCOP.cBufferSize=sizeof(IDINFO)Total=pSCOP.cBufferSize+sizeof(pSCOP)print(pSCIP.irDriveRegs.bCommandReg)print(pSCIP)print(pSCOP)print(Total)IOCTL_DISK_GET_DRIVE_GEOMETRY=0x0007c084IOCTL_DISK_GET_MEDIA_TYPES=0x70c00info=win32file.DeviceIoControl(hDisk,DFP_SEND_DRIVE_COMMAND,pSCIP,Total,#sizeof(SENDCMDOUTPARAMS)+sizeof(IDINFO)-1,None)print(info)win32file.CloseHandle(hDisk)www.zgxue.com防采集请勿采集本网。

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

sel.Font.Name=\"黑体\"#字体 sel.Font.Size=24#字大 sel.Font.Bold=True#粗体 sel.Font.Italic=True#斜体 sel.Font.Underline=True 下划线 sel.ParagraphFormat.LineSpacing=2*12#设置行距,1行=12磅 sel.

在这里插入图片描述

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

self.m_Sel=self.m_obWord.Selection#获取选择对象 def WriteLine(self,sTxt,sFont,lSize,bBold=0): 写一行到文档\"\" self.m_Sel.Font.Name=sFont self.m_Sel.Font.Bold=bBold self.m_Sel.Font.Size=

"""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 unittestfrom selenium import webdriverfrom time import *from selenium.webdriver import ActionChainsfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.wait import WebDriverWaitdef 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()

python-m pip install selenium 然后使用selenium中的webdriver来进行模拟网页点击: 1 2 3 4 5 6 7 8 9 from selenium import webdriver from selenium.common.exceptions import TimeoutException from

总结

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

#coding:utf-8 if_name_='_main_': print 'I need money!' print '-THIS IS GUI-' print 'This is your Python teacher,you lose.'

>>>app=my.Office.Word.GetInstance()doc=app.Documents[0]print doc.NameVBA工具e799bee5baa6e58685e5aeb931333337393636集.docdoc.Tables.Count2table=doc.Tables[1]table.Cell(1,1).Select()app.Selection.MoveEnd(Unit=12,Count=4)4app.Selection.Cells.Shading.Texture=-101.my.Office.Word.GetInstance()用win32com得到Word的Application对象的实例2.我所使用的样本word文件中包含两个Table第二个Table是想要修改的3.table.Cell(1,1).Select()用于选中这个样表的第一个单元格4.app.Selection.MoveEnd用于获得向右多选取4个单元格,wdCell=12,用于指示按单元格移动5.app.Selection.Cells.Shading.Texture=-10用于执行阴影底纹的设置工作,wdTextureDiagonalUp=-10是一个代表斜向右上的底纹样式的常数内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • python使用selenium实现网页用户名 密码 验证码自动登录功能
  • selenium+python实现自动登录脚本
  • python+selenium实现登录账户后自动点击的示例
  • python selenium cookie 绕过验证码实现登录示例代码
  • python selenium ui自动化解决验证码的4种方法
  • python3开发实例之非关系型图数据库neo4j安装方法及python3连接操
  • 浅谈tensorflow中dataset图片的批量读取及维度的操作详解
  • 详解python匿名函数(lambda函数)
  • 解决nohup重定向python输出到文件不成功的问题
  • vscode写python时的代码错误提醒和自动格式化的方法
  • python使用微信接入图灵机器人过程解析
  • numpy 声明空数组详解
  • 详解python里使用正则表达式的全匹配功能
  • 浅析python语言自带的数据结构有哪些
  • python实现根据ip地址反向查找主机名称的方法
  • python操作word文档表格
  • 请教python中调用DeviceIoControl的一个问题
  • 用python将任意已有表格插入word文档?
  • 关于Python一直提示IndexError: list index out of range是怎么回事?
  • 如何用python或者R批量生成固定格式的word文档
  • python操作word文档,用win32com,如何用python中的变量来命名word文档的文件名
  • python3 selenium3 如何点击页面中的按钮,像百度文库中的继续浏览按钮。
  • 求一个PYTHON案例
  • 有没有会python网络爬虫的,求手把手教,RMB报酬,可以商量,在线等
  • 如何用python whois爬取全网IP whois信息。
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全vbsdos/bathtahtcpythonperl游戏相关vba远程脚本coldfusionruby专题autoitseraphzonepowershelllinux shellluagolangerlang其它首页python使用selenium实现网页用户名 密码 验证码自动登录功能selenium+python实现自动登录脚本python+selenium实现登录账户后自动点击的示例python selenium cookie 绕过验证码实现登录示例代码python selenium ui自动化解决验证码的4种方法python3开发实例之非关系型图数据库neo4j安装方法及python3连接操浅谈tensorflow中dataset图片的批量读取及维度的操作详解详解python匿名函数(lambda函数)解决nohup重定向python输出到文件不成功的问题vscode写python时的代码错误提醒和自动格式化的方法python使用微信接入图灵机器人过程解析numpy 声明空数组详解详解python里使用正则表达式的全匹配功能浅析python语言自带的数据结构有哪些python实现根据ip地址反向查找主机名称的方法python入门教程 超详细1小时学会python 列表(list)操作方法详解python 元组(tuple)操作详解python 字典(dictionary)操作详解pycharm 使用心得(一)安装和首python strip()函数 介绍python 中文乱码问题深入分析python中使用xlrd、xlwt操作excepython科学计算环境推荐——anacpython逐行读取文件内容的三种方python中不同进制的语法及转换方法分析python 在某.py文件中调用其他.py内的函数使用python对文件中的数值进行累加的实例在python中按照特定顺序访问字典的方法详python查找两个有序列表中位数的方法【基python实现名片管理系统项目python编程实现输入某年某月某日计算出这用python中的__slots__缓存资源以节省内存使用python实现租车计费系统的两种方法从零开始学python第八周:详解网络编程基
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved