我用这个控件点击验证码输入框,想让验证码弹出来,现在的结果是rpa点击之后输出的结果是验证码已经出现,可是页面看不到,截图也截不到
https://www.chsi.com.cn/xlcx/lscx/query.do
用rpa的控件点击,页面没出现,人用鼠标点能出现
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您描述的问题,RPA工具在点击验证码输入框时,页面未显示验证码,但RPA输出结果显示验证码已出现。这种情况可能与控件的模拟点击行为、页面加载机制或浏览器自动化插件的兼容性有关。以下是详细的分析和解决方案:
模拟点击 vs 实际点击
RPA工具在执行点击操作时,默认可能使用的是“模拟点击”(simulate=True)。模拟点击通过直接向控件发送指令实现,而不依赖于鼠标的实际移动和点击。这种方式可能导致某些动态交互(如验证码弹出)无法正确触发。
页面加载延迟
验证码弹出可能依赖于页面的异步加载逻辑(如JavaScript事件)。如果RPA在页面尚未完全加载时就执行了点击操作,可能会导致验证码未能正确显示。
浏览器插件兼容性
如果您使用的是Edge浏览器,且RPA的Edge插件未正确安装或配置,可能会导致页面交互异常。
验证码机制限制
某些网站对自动化工具的行为进行了限制,例如检测到非人工操作时会阻止验证码弹出。
将点击模式从“模拟点击”改为“实际点击”,以确保页面能够正确响应点击事件:
page.click('验证码输入框', simulate=False)
simulate=False
表示RPA将通过实际的鼠标点击操作来触发事件,而非直接向控件发送指令。这可以解决部分因模拟点击导致的交互问题。在点击验证码输入框之前,确保页面已完全加载。可以通过以下方式增加等待时间:
page.wait_loaded(timeout=10) # 等待页面加载完成,超时时间为10秒
page.click('验证码输入框', simulate=False)
wait_loaded
方法用于等待页面加载完成,避免因页面未加载而导致的交互失败。确保RPA的Edge插件已正确安装并启用: 1. 打开Edge浏览器,进入扩展程序页面(edge://extensions/
)。 2. 检查是否已安装阿里云RPA插件。如果未安装,请参考以下步骤安装: - 方法一:手动拖拽插件文件(chrome.crx
)至扩展程序页面,并替换相关文件。 - 方法二:运行1.13setup.bat
文件进行自动安装。 3. 确保插件的“收集错误”功能已开启,并检查是否有报错信息。
如果基于自动匹配模式无法正确识别验证码输入框,可以尝试使用图像录制模式: 1. 在RPA编辑器中选择“图像录制模式”。 2. 截取验证码输入框的区域,并设置验证动作。 3. 使用图像识别的方式匹配目标控件。
如果上述方法均无效,可以考虑通过第三方打码平台(如超级鹰)实现验证码的自动识别和输入: 1. 使用RPA工具截取验证码图片:
page.screenshot('验证码截图', 'C:\\Users\\用户\\Desktop\\验证码.png')
def OCR_recognition(screenshot_path):
captcha_user = '超级鹰用户名'
captcha_pwd = '超级鹰密码'
captcha_soft = '96001'
captcha_cjy = Chaojiying_Client(captcha_user, captcha_pwd, captcha_soft)
im = open(screenshot_path, 'rb').read()
dis_result = captcha_cjy.PostPic(im, 9101)
return dis_result['pic_str']
dis_code = OCR_recognition('C:\\Users\\用户\\Desktop\\验证码.png')
page.input_text('验证码输入框', dis_code, simulate=True)
page.click('提交按钮', simulate=False)
通过以上方法,您可以有效解决RPA工具在点击验证码输入框时页面未显示验证码的问题。如果仍有疑问,请随时补充说明具体场景和错误信息,我们将为您提供进一步的支持。