【问题标题】:Detect user click检测用户点击
【发布时间】: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


【解决方案1】:

这是一个可能并不适合所有人的解决方案。轮询网址...

poll_rate = 1
current_url = driver.current_url
while driver.current_url == current_url:
  time.sleep(poll_rate)

谁能提出更好的解决方案?!

我很震惊,几乎不可能以实际的方式检测用户输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 2013-05-23
    相关资源
    最近更新 更多