ToB企服应用市场:ToB评测及商务社交产业平台

标题: Python实现获取网页内容及自动填表单与登录功能 [打印本页]

作者: 盛世宏图    时间: 2024-6-13 21:33
标题: Python实现获取网页内容及自动填表单与登录功能
这篇文章重要为大家详细介绍了如何使用Python实现模仿浏览器启动,获取网页内容、自动填表单、自动登录、自动过验证码等功能,需要的可以参考一下

食用前准备
python 3.10.10 #二维码的库ddddocr 需要


  1. import time
  2. import ddddocr
复制代码
源码​​​​​

  1. # import threading  # 导入threading模块# from Feishu_SendMsg import *# Identification verification codeimport time
  2. import ddddocrinterval = 100 * 60# def delayCall():  # 定义方法#     SendMsg("选题 快快快!!!")#     timer=threading.Timer(interval,delayCall)  # 每秒运行#     timer.start()  # 执行方法    # if __name__ == '__main__':  ##     t1=threading.Timer(interval,function=delayCall)  # 创建定时器#     t1.start()  # 开始执行线程from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.keys import Keys# SendMsg("自动填表单")options = webdriver.ChromeOptions()options.add_argument('--enable-automation')options.add_argument('--no-sandbox')options.add_argument('--disable-extensions')options.add_argument('--start-maximized')options.add_argument('--disable-infobars')prefs = {"profile.default_content_setting_values.autocomplete_enabled": 2}options.add_experimental_option("prefs", prefs)# SendMsg("创建 Chrome 浏览器实例")# 创建 Chrome 浏览器实例browser = webdriver.Chrome(options=options)# SendMsg("打开网页")browser.get('www.tttttttt.com')# SendMsg("找到账号和密码框元素并输入指定字符串")username = browser.find_element("name","username")password = browser.find_element("name","userpass")usercode = browser.find_element("name","usercode")img_verifycode = browser.find_element("id","img_verifycode")# SendMsg("自动添补账号密码")username.send_keys("11111")password.send_keys("11111")verifycodeBase64 = img_verifycode.screenshot_as_base64ocr = ddddocr.DdddOcr()res = ocr.classification(verifycodeBase64)usercode.send_keys(res)# SendMsg(f"辨认并填写验证码: {res}")# SendMsg("提交表单")password.send_keys(Keys.RETURN)# SendMsg("登陆: 提交表单")
复制代码
知识点增补

下面为大家介绍一下文中用到的ddddocr库的相关使用吧
辨认验证码的python 库有很多,用起来也并不简朴,ddddocr (带带弟弟ocr)库是一个简朴实用的辨认验证码的库,保举给大家
ddddocr具体使用方法​​​​​​​
  1. import os
  2. import ddddocr
  3. from time import sleep
  4. from PIL import Image
  5. from selenium import webdriver
  6. from selenium.webdriver.common.by import By
  7. class GetVerificationCode:
  8.   def __init__(self):
  9.         self.res = None
  10.         url = '要登录的地址'
  11.         self.driver = webdriver.Chrome()
  12.         self.driver.maximize_window()  # 将浏览器最大化
  13.         self.driver.get(url)
  14.   # 获取验证码信息
  15.     def getVerification(self):
  16.         # 获取当前文件的位置、并获取保存截屏的位置
  17.         current_location = os.path.dirname(__file__)
  18.         screenshot_path = os.path.join(current_location, "..", "VerificationCode")
  19.         # 截取当前网页并放到自定义目录下,并命名为printscreen,该截图中有我们需要的验证码
  20.         sleep(1)
  21.         self.driver.save_screenshot(screenshot_path + '//' + 'printscreen.png')
  22.         sleep(1)
  23.         # 定位验证码
  24.         imgelement = self.driver.find_element(By.XPATH, '验证码图片的Xpath定位')
  25.         # 获取验证码x,y轴坐标
  26.         location = imgelement.location
  27.         # 获取验证码的长宽
  28.         size = imgelement.size
  29.         # 写成我们需要截取的位置坐标
  30.         rangle = (int(location['x'] + 430),
  31.                   int(location['y'] + 200),
  32.                   int(location['x'] + size['width'] + 530),
  33.                   int(location['y'] + size['height'] + 250))
  34.         # 打开截图
  35.         i = Image.open(screenshot_path + '//' + 'printscreen.png')
  36.         # 使用Image的crop函数,从截图中再次截取我们需要的区域
  37.         fimg = i.crop(rangle)
  38.         fimg = fimg.convert('RGB')
  39.         # 保存我们截下来的验证码图片,并读取验证码内容
  40.         fimg.save(screenshot_path + '//' + 'code.png')
  41.         ocr = ddddocr.DdddOcr()
  42.         with open(screenshot_path + '//' + 'code.png', 'rb') as f:
  43.             img_bytes = f.read()
  44.         self.res = ocr.classification(img_bytes)
  45.         print('识别出的验证码为:' + self.res)
  46.     # 判断验证码错误时的提示信息是否存在
  47.     def isElementPresent(self, by, value):
  48.         try:
  49.             element = self.driver.find_element(by=by, value=value)
  50.         except NoSuchElementException:
  51.             pass
  52.             # 发生了NoSuchElementException异常,说明页面中未找到该元素,返回False
  53.             return False
  54.         else:
  55.             # 没有发生异常,表示在页面中找到了该元素,返回True
  56.             return True
  57.   # 登录
  58.     def login(self):
  59.         self.getVerification()
  60.         self.driver.find_element(By.XPATH, '用户名输入框Xpath定位').send_keys('用户名')
  61.         self.driver.find_element(By.XPATH, '密码输入框Xpath定位').send_keys('密码')
  62.         self.driver.find_element(By.XPATH, '验证码输入框Xpath定位').send_keys(self.res)
  63.         sleep(1)
  64.         self.driver.find_element(By.XPATH, '登录按钮Xpath定位').click()
  65.         sleep(2)
  66.     isFlag = True
  67.         while isFlag:
  68.             try:
  69.                 isPresent = self.isElementPresent(By.XPATH, '验证码错误时的提示信息Xpath定位')
  70.                 if isPresent is True:
  71.                     codeText = self.driver.find_element(By.XPATH, '验证码错误时的提示信息Xpath定位').text
  72.                     if codeText == "验证码不正确":
  73.                         self.getVerification()
  74.                         sleep(2)
  75.                         self.driver.find_element(By.XPATH, '验证码输入框Xpath定位').clear()
  76.                         sleep(1)
  77.                         self.driver.find_element(By.XPATH, '验证码输入框Xpath定位').send_keys(self.res)
  78.                         sleep(1)
  79.                         self.driver.find_element(By.XPATH, '登录按钮Xpath定位').click()
  80.                         sleep(2)
  81.                     tips = self.driver.find_element(By.XPATH,
  82.                                                     '未输入验证码时的提示信息Xpath定位').text
  83.                     if tips == "请输入验证码":
  84.                         self.getVerification()
  85.                         sleep(2)
  86.                         self.driver.find_element(By.XPATH, '验证码输入框Xpath定位').click()
  87.                         sleep(1)
  88.                         self.driver.find_element(By.XPATH, '验证码输入框Xpath定位').send_keys(self.res)
  89.                         sleep(1)
  90.                         self.driver.find_element(By.XPATH, '登录按钮Xpath定位').click()
  91.                         sleep(2)
  92.                     continue
  93.                 else:
  94.                     print("验证码正确,登录成功!")
  95.             except NoSuchElementException:
  96.                 pass
  97.             else:
  98.                 isFlag = False
  99.                
  100.         sleep(5)
  101.         self.driver.quit()
  102. if __name__ == '__main__':
  103.     GetVerificationCode().login()
复制代码
辨认结果

 到此这篇关于Python实现获取网页内容及自动填表单与登录功能的文章就介绍到这了,希望大家以后多多支持!
最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋侪们如果需要可以自行免费领取【包管100%免费】

 这些资料,对于【软件测试】的朋侪来说应该是最全面最完整的备战堆栈,这个堆栈也伴随上万个测试工程师们走过最艰难的路程,希望也能资助到你!



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4