Python Selenium UI 实现自动化登录【有验证码】

Python Selenium UI 实现自动化登录【有验证码】

- 试了N种,这个是我觉得最方便的,代码也很少~

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from PIL import Image
import ddddocr

# 【修改成自己的chromedriver】
s = Service(r"F:\Course\edutest\chromedriver.exe")
driver = webdriver.Chrome(service=s)
driver.get('需要进行自动化的网址')
driver.refresh()  # 刷新页面
driver.maximize_window()  # 浏览器最大化
# 对当前页面进行截图
driver.save_screenshot('login.png')
# 选择验证码图片的元素
yzm_btn = driver.find_element_by_id('imgObj')
# 获取图片元素的位置
loc = yzm_btn.location
# 获取图片的宽高
size = yzm_btn.size
# 获取验证码上下左右的位置,电脑的缩放比例125%(100%就不需要乘),需要乘以1.25,否则会出现定位不准确
left = loc['x']
top = loc['y']
right = (loc['x'] + size['width'])
botom = (loc['y'] + size['height'])
val = (left, top, right, botom)         # 得到左上右下的值,顺序固定
# 打开网页截图
login_pic = Image.open('login.png')
# 通过左上右下的值,去截取验证码
yzm_pic = login_pic.crop(val)
# 保存验证码
yzm_pic.save('yzm.png')
# 识别验证码
ocr = ddddocr.DdddOcr(old=True)
with open("yzm.png", 'rb') as f:
    image = f.read()
res = ocr.classification(image)
# 填充用户名 密码 验证码 【有id的用id,find_element_by_id替换find_element_by_name】
driver.find_element_by_name('txt_loginName').send_keys("用户名")
driver.find_element_by_name('txt_password').send_keys("密码")
driver.find_element_by_name("txt_code").send_keys(res)
# 点击登录
driver.find_element_by_class_name("login_button").click()


****此处感谢文安哲大佬,附上链接~
https://wenanzhe.com/

你可能感兴趣的:(Python自动化,python,selenium,ui)