【发布时间】:2021-07-22 09:12:12
【问题描述】:
我正在使用自己的凭据登录网站,但 2FA 处于活动状态。因此,我需要一种方法来“暂停”脚本,直到我用鼠标手动单击按钮。
请注意,该按钮始终是可点击的,因此使用像 element_to_be_clickable 这样的显式等待显然不起作用。
我知道如何通过命令提示符使用input() 执行此操作,但我宁愿手动处理浏览器,因为脚本的其余部分也需要手动浏览器交互。
我也知道我可以等到脚本检测到一定数量的输入字符,但我不喜欢这种方法,因为拼写错误。
我知道我可以使用显式等待来检测下一页上的某些内容,但我想避免这种方式,以防我在提交数据之前需要离开键盘。但是,我可以设置一个不合理的长等待期,例如WebDriver(driver, 999999999),但这种方法看起来超级 hacky。
有什么想法吗?
【问题讨论】:
-
我知道如何通过命令提示符使用 input() 来做到这一点——我们甚至可以自动化这部分。这样您就不必进行任何手动交互
-
@cruisepandey 我不想手动与命令提示符交互,代码将基于我的手机身份验证应用程序是随机的,还是您建议其他方式?
-
在 python 中你可以处理命令提示符输入我相信,我们不需要 Selenium 作为命令提示符。你能简单地告诉我,你的手动步骤到底是什么。
-
@cruisepandey 步骤是: (1) 从命令提示符执行脚本; (2) 脚本导航到网站并提交凭据; (3) 网站提示请求2FA码——此时我想手动查看手机获取2FA码,然后手动输入浏览器并手动点击提交,但我想不出任何实用的方法暂停执行脚本,直到我手动点击“提交”按钮
-
@cruisepandey 我刚想到的一种方法是直接将 JS
addEventListener('click'...与execute_script附加在一起,但这似乎也很骇人:/
标签: python selenium click user-input wait