首页 > 其他分享 >selenium获取验证码截图

selenium获取验证码截图

时间:2022-12-09 18:24:19浏览次数:45  
标签:截图 code selenium 验证码 ele path import browser

获取验证码截图代码:

获取验证码代码:
#!/user/bin/env python3
# -*- coding: utf-8 -*-
import requests
from selenium   import webdriver
from selenium.webdriver.common.by   import By
from webdriver_helper   import get_webdriver
import time
from PIL   import Image     # pip install PIL    # cmd命令下载

from os   import path
import os

VerificationCode   = ''      # 全局变量  用于获取写入验证码

# 以下为selenium对浏览器的操作
option   = webdriver.ChromeOptions()
#实现无可视化界面的操作
option.add_argument(  '--headless' )
option.add_argument(  '--disable-gpu' )

browser   = get_webdriver()
browser.maximize_window()
browser.implicitly_wait(  10 )
browser.get(  "https://starlink-pre.bytenew.com/login" )    #你需要访问的网站

# =====================对验证码进行定位,并保存验证码图片=====================
# 建的目录
try :
    path_mkdir   = "D:/VerificationCode/" # 建你自己的目录
    # 判断是否已经存在该目录
    if not os.path.exists(path_mkdir):
        # 目录不存在,进行创建操作
        os.mkdir(path_mkdir) 
        print (  "目录新建成功:" + path_mkdir)
    else :
        print (  "目录已存在!!!" )
except BaseException as msg:
    print (  "新建目录失败:" + msg)

# (1)登录页面截图
browser.save_screenshot(  "D:/VerificationCode/code.png" )  #可以修改保存地址
time.sleep(  2 )
# (2)获取图片验证码坐标

code_ele   = browser.find_element(By.XPATH,  "//*[@id='app']/div/div/form/div[3]/div/div[2]/img" )
print (  "验证码的坐标为:" , code_ele.location)  #控制台查看{'x': 1086, 'y': 368}
print (  "验证码的大小为:" , code_ele.size)  # 图片大小{'height': 40, 'width': 110}
# (3)图片4个点的坐标位置
left   = code_ele.location[  'x' ]  #x点的坐标
top   = code_ele.location[  'y' ]  #y点的坐标


right   = code_ele.size[  'width' ]  + left  #上面右边点的坐标
down   = code_ele.size[  'height' ]  + top  #下面右边点的坐标
image   = Image.  open (  'D:/VerificationCode/code.png' )     # 截取你整个的登录页面
# (4)将图片验证码截取
code_image   = image.crop((left  * 1.5 , top  * 1.5 , right  * 1.5 , down  * 1.5 ))   #乘以1.5是因为电脑缩放是150%
code_image.save(  'D:/VerificationCode/code_new.png' )     #截取的验证码图片保存为新的文件

注意:这里要注意电脑屏幕的缩放与布局的设置

查看电脑缩放与布局方法:

 

标签:截图,code,selenium,验证码,ele,path,import,browser
From: https://www.cnblogs.com/liuyanhang/p/16969684.html

相关文章

  • Qt:QCamera打开系统摄像头,截图保存实例
    ​​          Qt,C++学习交流群:302558294(欢迎你的加入)效果图:动态图太大,这里我就不弄动态图了。用到三个库:#include<QCamera>#include<QCameraImage......
  • Selenium 自动化中实现双击操作
    在selenium中,以name定位为例,单击元素的代码为:driver.find_element_by_name(“name”).click(),那么,实现双击操作的代码能不能写成:driver.find_element_by_name(“name”).do......
  • Selenium06-链接文本定位
    LINK_TEXT超级链接:标记名称是a的页面元素,点击后跳转到其它网页文本型超级链接:是指a的开始标记与结束标记之间有文本内容的超级链接<ahref='flow.php'>查看购物......
  • Selenium07-类名和标记名定位
    CLASS_NAME定位html语法里class属性class属性规定元素的类名(classname),如需为一个元素规定多个类,用空格分隔类名html里的类一般是用于统一设置控件的样式,对文......
  • Selenium05-NAME定位
    NAME定位name属性指定元素的名称,在当前的HTML文档中可以不唯一<inputtype='text'name='username'size=25><inputtype='password'name='password'size=25>W......
  • Selenium02-WebDriver
    SeleniumWebDriver从selenium模块里导入子模块webdriverfromseleniumimportwebdriver调用webdriver模块里浏览器名称的构造方法,构建一个驱动程序对象实例,通......
  • Selenium03-定位元素
    Web自动化测试核心问题Web应用程序的功能自动化(也称为UI自动化)测试的本质就是使用工具代替人工进行界面操作核心问题:如何识别(也叫做定位)要操作的页面元素识别后......
  • Selenium04-ID定位
    ID定位HTML语法中规定id属性在当前的HTML文档中必须是唯一的<inputtype='text'id='username'size=25><inputtype='password'id='password'size=25>WebDrive......
  • Selenium01-介绍
    什么是功能测试和黑盒测试Functionaltesting(功能测试),也称为behavioraltesting(行为测试)或UI层测试根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为......
  • Response_验证码_点击切换以及ServletContext_概述
    Response_验证码_点击切换分析:点击链接或者图片,需要换一张1.给超链接和图片绑定单击事件2.重新设置图片的src属性值register.html<!DOCTYPEhtml><htmllang......