Python Selenium 自动化测试:处理验证码错误并重新输入
在使用 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('验证码输入失败')
代码解释:
-
在
try语句块中添加一个while True循环,循环执行以下操作:- 找到验证码输入框元素。
- 等待用户输入验证码。
- 清除验证码输入框内容。
- 将用户输入的验证码填入输入框。
- 等待 1 秒钟。
- 判断是否出现了
class为'validate_tips_two'的元素,如果出现,则表示验证码输入错误,打印提示信息,并使用continue关键字继续执行循环,等待用户重新输入。 - 如果没有出现
class为'validate_tips_two'的元素,则表示验证码输入正确,使用break关键字退出循环。
-
在
try语句块之外添加一个except语句块,用于捕获可能发生的异常,例如无法找到验证码输入框元素等。
通过这种方法,即使用户输入的验证码错误,程序也能自动进行处理,直到用户输入正确的验证码为止。
原文地址: https://www.cveoy.top/t/topic/jpC5 著作权归作者所有。请勿转载和采集!