Web自动化登录-对接打码平台
作者:互联网
经过尝试多种自动化登录方式,发现通过对接打码平台实现识别验证码准确率更高。
# author:nly # 时间:2022/6/16 9:16 import base64 import json import requests import constants def base64_api(img): """ :param username:用户名 :param password:密码 :param img:图片路径 :param typeid:要识别的验证码的类型 :return:验证码的识别结果 """ with open(img, 'rb') as f: base64_data = base64.b64encode(f.read()) b64 = base64_data.decode() data = {"username": constants.TUJ_USERAME, "password": constants.TUJ_PASSWORD, "typeid": 3, "image": b64} result = json.loads(requests.post("http://api.ttshitu.com/predict", json=data).text) if result['success']: return result["data"]["result"] else: return result["message"]
上述代码中,constants.TUJ_USERNAME,constants.TUJ_PASSWORD是打码平台中自己的账户信息。
打码平台:http://www.ttshitu.com/,注册,充值,即可。
编写完成获取验证码的识别结果方法后,在后面的方法中直接调用即可。
# author:nly # 时间:2022/6/16 10:41 """ 通过对接打码平台,实现自动化登录 """ import unittest from selenium import webdriver import constants import time from param_code_shuyinghunhe import base64_api class TestCase(unittest.TestCase): def test_xcp_login(self): global driver driver = webdriver.Chrome() driver.get('http://192.168.2.28:8087/') driver.implicitly_wait(3) # 定位到用户名和密码元素,输入对应内容 username_label = driver.find_element_by_id('username') username_label.send_keys(constants.XCP_USERNAME) password_label = driver.find_element_by_id('password') password_label.send_keys(constants.XCP_PASSWORD) # 获取验证码,保存验证码图片 yzm_label = driver.find_element_by_class_name('ant-col.ant-col-10') time.sleep(1) yzm_label.screenshot('xcp_yzm.png') time.sleep(1) # 对接打码平台,获取验证码识别结果 img_path = 'xcp_yzm.png' result_code = base64_api(img_path) print('验证码结果:', result_code) code_label = driver.find_element_by_id('inputCode') code_label.send_keys(result_code) btn_login = driver.find_element_by_class_name('login-button.ant-btn.ant-btn-primary') btn_login.click() time.sleep(1)
标签:Web,对接,driver,验证码,label,result,import,打码,constants 来源: https://www.cnblogs.com/niulingyu/p/16381703.html