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