python+Selenium之自动滑块破解滑块验证码

python+Selenium之自动滑块破解滑块验证码,第1张

在一般的使用场景下,使用selenium进行web自动化测试都需要打开一个浏览器的实体,测试脚本通过控制webdriver来对浏览器进行 *** 作。但是在一些场景下测试工程师需要在不打开浏览器的情况下进行自动化测试,也就是以headless的方式运行自动化测试。

业界有一些headless的第三方库可以使用,例如大名鼎鼎的PhantomJS。但是这些工具的安装很复杂,同时不一定保证持续的维护。

现在全球最受欢迎的浏览器Chrome在Chrome 59 (Chrome 60 for Windows)版本中已经支持了headless mode,只需要配置一些简单的参数就可以实现。

首先要确认自己机子上的Chrome版本。

require 'selenium-webdriver'

options = Selenium::WebDriver::Chrome::Optionsnew

optionsadd_argument('--headless')

optionsadd_argument('--disable-gpu')

optionsadd_argument('--remote-debugging-port=9222')

driver = Selenium::WebDriverfor :chrome, options: options

driverget ">

Selenium中对滑块的 *** 作基本是采用元素拖拽的方式,而这种方式需要用到Selenium的Actionchains功能模块的drag_and_drop_by_offset方法

drag_and_drop_by_offset(source,xoffset,yoffset)

source:鼠标拖动的原始元素

xoffset:鼠标把元素拖动到另一个位置的x坐标

yoffset:鼠标把元素拖动到另一个位置的y坐标

思路 :1 获取滑块元素,求出滑块的长度和宽度 

              获取滑块区域元素,求出其长度和宽度

           2 使用drag_and_drop_by_offset方法移动滑块到滑块区域的最大长度及宽度

以携程网登录页面举例

"""实现携程网站的登录功能"""

from seleniumimport webdriver

import time

from seleniumwebdrivercommonaction_chainsimport ActionChains

driver = webdriverChrome("C:/Users/Administrator/PycharmProjects/untitled/chromedriverexe")

driverimplicitly_wait(30)

driverget(">

a1,a2=0,0

a3=[]

for a in range(100,10000):

c=0

for b in range(1,a//2+1):

if a%b==0:

c+=b

if c==a:

a3append(a)

elif c>a:

a1+=1

else:

a2+=1

print("完全数:")

print(a3)

print("丰沛数:")

print(a1)

print("不足数:")

print(a2)

你可能需要两个函数

1、implicitly_wait(30)智能等待,最大30s

2、location_once_scrolled_into_view 滚动到某个元素处,也就是滚动直到这个元素出现在屏幕里

以上就是关于python+Selenium之自动滑块破解滑块验证码全部的内容,包括:python+Selenium之自动滑块破解滑块验证码、python如何在手机上点击多项选择题的选项、实践(2)登录功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9428265.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存