Python selenium :如何让人类的互动在一个自动化的脚本?

laximzn5  于 2023-01-26  发布在  Python
关注(0)|答案(3)|浏览(134)

我正在写一个脚本,在弹出窗口中显示验证码和一些其他的东西。我正在为火狐写脚本。有没有可能,我饲料的价值观和点击提交按钮脚本可以恢复操作?我猜,某种无限循环?

e0uiprwp

e0uiprwp1#

您可以等待用户单击提交按钮:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# load the page
driver.get("https://www.google.com/recaptcha/api2/demo")

# get the submit button
bt_submit = driver.find_element_by_css_selector("[type=submit]")

# wait for the user to click the submit button (check every 1s with a 1000s timeout)
WebDriverWait(driver, timeout=1000, poll_frequency=1) \
  .until(EC.staleness_of(bt_submit))

print "submitted"
xdnvmnnf

xdnvmnnf2#

我相信你想问的是,是否有可能让你的 selenium 脚本暂停人类互动,不能完全自动化。
有几种方法可以做到这一点:
轻松但粗糙的感觉:
在python脚本中,将

import pdb 
 pdb.set_trace()

在你想为人类暂停的地方,这会导致python应用程序进入调试器,当人类完成他们的任务后,他们可以输入c并按回车键继续运行selenium脚本。
稍微少一些粗糙的感觉(对人来说更容易)。
假设用户提交了一些东西,在你想要暂停的地方,你可以这样做(顶部有一个import time):

for _ in xrange(100): # or loop forever, but this will allow it to timeout if the user falls asleep or whatever
    if driver.get_current_url.find("captcha") == -1:
        break
    time.sleep(6) # wait 6 seconds which means the user has 10 minutes before timeout occurs

更优雅的方法留给读者作为练习(我知道有一种方法您应该能够不必忙着等待,但我已经很久没有使用它了)

dy1byipe

dy1byipe3#

一种方法是检查输入验证码后加载的下一个页面的某些内容,并等待直到找到它们;另一种方法是检查当前URL直到它发生变化(通常是输入验证码后URL发生变化)或等待下一个URL-

while driver.current_url == your_current_url:
    wait

相关问题