首页 > 其他分享 >一、验证码验证-10

一、验证码验证-10

时间:2022-09-01 16:13:39浏览次数:54  
标签:10 code name 验证 driver 验证码 element user imooc

1、解决验证码思路

(1)内部网站,可以设置万能的验证码

(2)让开发去掉验证码

(3)识别验证码:

  • 定位图片坐标
  • 保存图片
  • 解析图片(图片解析软件)
  • 直接读取保存后的文档。

2、本机安装pip库,用于解析图片

C:\Users\jieqiong>pip install Pillow
Collecting Pillow
  Downloading https://files.pythonhosted.org/packages/8f/10/c8dc9fff37b69b5962b7783ab4835611e83dada453cd9913d82ca2a1321b/Pillow-8.4.0-cp36-cp36m-win_amd64.whl (3.2MB)
    100% |████████████████████████████████| 3.2MB 123kB/s
Installing collected packages: Pillow
Successfully installed Pillow-8.4.0
You are using pip version 9.0.3, however version 22.2.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

 3、根据元素id,计算元素地址。

  • 方法一:把计算机的缩放调整为100%
  • 方法二:同等扩大1.75倍
  • 结果查询:D:\imooc中的imooc.png、imooc_crop.png
#coding=utf-8
from selenium import webdriver
import time
import random
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
# 使用pip库进行图片解析
from PIL import Image

# Chrome浏览器的驱动
driver = webdriver.Chrome()

# 加载指定url界面
driver.get("http://www.5itest.cn/register")

# 使浏览器界面最大化
driver.maximize_window()

# 保存整个页面的图片
driver.save_screenshot("D:/imooc/imooc.png")

# 通过获取验证码的id,计算code_element的元素
code_element = driver.find_element_by_id("getcode_num")

# 通过code_element的元素,计算code_element元素的坐标
# 获取的格式是:{"x":123,"y":345}
print(code_element.location)

# 左边点的坐标
left = code_element.location['x']*1.75
top = code_element.location['y']*1.75

# 右边点的坐标
right = code_element.size['width']*1.75+left
height = code_element.size['height']*1.75+top

# 打开一张图片,并命名为一个对象
im = Image.open("D:/imooc/imooc.png")

# 按照一个坐标进行裁剪
img = im.crop((left,top,right,height))

# 保存裁剪后的图片
img.save("D:/imooc/imooc_crop.png")

# 循环一次,指定生成随机的用户名、邮箱地址、密码
for i in range(1):
    user_name = ''.join(random.sample('1234567890abcdefg',5))
    user_emil = user_name +"@163.com"
    user_password = user_name

# 加载邮箱地址    
driver.find_element_by_id("register_email").send_keys(user_emil)

# 加载用户名
user_name_element_node = driver.find_elements_by_class_name("controls")[1]
user_element = user_name_element_node.find_element_by_class_name("form-control")
user_element.send_keys(user_name)

# 加载密码
driver.find_element_by_name("password").send_keys(user_password)

# 延迟10s
#time.sleep(10)
# 关闭进程
#driver.close()
PS D:\imooc\selenium> python .\start_browser.py

DevTools listening on ws://127.0.0.1:63990/devtools/browser/6169a509-b31f-434c-8689-e87a8b376e32
{'x': 765, 'y': 527}

 

标签:10,code,name,验证,driver,验证码,element,user,imooc
From: https://www.cnblogs.com/jieqiong1755/p/16641843.html

相关文章