如何检测验证码何时完成?硒Python

问题描述

目前,我正在努力正确识别验证码何时完成。我最初的策略是等到屏幕上显示选中标记,然后中断循环。即使未显示选中标记,element.is_displayed()返回true时当前发生的情况。什么是检测人工完成验证码的好方法?

print("Waiting for captcha completion.")
    iframe = WebDriverWait(driver,300).until(
        EC.presence_of_element_located(
            (By.XPATH,"/html/body/div[1]/div[2]/div/div/div[2]/form/div[1]/div[3]/div/div/div/div/div/div/iframe"))

    )
    driver.switch_to.frame(iframe)
    element = WebDriverWait(driver,"/html/body/div[2]/div[3]/div[1]/div/div/span/div[4]"))

    )
    for i in range(1000):
        if element.is_displayed():
            driver.switch_to.default_content()
            button = WebDriverWait(driver,60).until(
                EC.presence_of_element_located(
                    (By.XPATH,"/html/body/div/div[2]/div/div/div[2]/form/div[2]/button"))

            )
            break
        time.sleep(.25)

解决方法

这是硒的最坏习惯,

CAPTCHA是完全自动化的公共Turing测试的缩写,用于告诉计算机和人类分开,它是专门为防止自动化而设计的,因此请勿尝试!避开验证码检查有两种主要策略:

在测试环境中禁用验证码 添加一个挂钩,以允许测试绕过验证码

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...