在使用 Python Selenium 自动化测试时,经常会遇到需要处理验证码的情况。本文介绍一种方法,可以自动处理验证码错误,并等待用户重新输入,直到输入正确为止。

原始代码:

try:
    element = wd.find_element(By.ID, 'validateCode')  # 找到验证码输入框
    captcha = input('请输入验证码:')  # 等待手动输入验证码
    element.clear()  # 清除内容
    element.send_keys(captcha)  # 输入验证码
    time.sleep(1)
    break  # 输入完成,退出循环

该代码中,如果输入的验证码错误,程序将无法继续执行。为了解决这个问题,可以在 try 语句块中加入一个 while 循环,当出现 class 为 'validate_tips_two' 的元素时,就执行清除验证码输入框的内容,并等待重新输入的操作,直到验证码输入正确为止。

修改后的代码如下:

try:
    while True:
        element = wd.find_element(By.ID, 'validateCode')  # 找到验证码输入框
        captcha = input('请输入验证码:')  # 等待手动输入验证码
        element.clear()  # 清除内容
        element.send_keys(captcha)  # 输入验证码
        time.sleep(1)
        if wd.find_elements(By.CLASS_NAME, 'validate_tips_two'):
            print('验证码输入错误,请重新输入')
            continue
        else:
            break  # 输入完成,退出循环
except:
    print('验证码输入失败')

代码解释:

  1. 在 try 语句块中添加一个 while True 循环,循环执行以下操作:

    • 找到验证码输入框元素。
    • 等待用户输入验证码。
    • 清除验证码输入框内容。
    • 将用户输入的验证码填入输入框。
    • 等待 1 秒钟。
    • 判断是否出现了 class 为 'validate_tips_two' 的元素,如果出现,则表示验证码输入错误,打印提示信息,并使用 continue 关键字继续执行循环,等待用户重新输入。
    • 如果没有出现 class 为 'validate_tips_two' 的元素,则表示验证码输入正确,使用 break 关键字退出循环。
  2. 在 try 语句块之外添加一个 except 语句块,用于捕获可能发生的异常,例如无法找到验证码输入框元素等。

通过这种方法,即使用户输入的验证码错误,程序也能自动进行处理,直到用户输入正确的验证码为止。

Python Selenium 自动化测试:处理验证码错误并重新输入

原文地址: https://www.cveoy.top/t/topic/jpC5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录