我正在制作一个脚本,在弹出窗口中显示CAPTCHA和其他一些内容。我正在为FireFox编写脚本。是否可以提供值并按下提交按钮脚本可以恢复操作?我猜,某种无限循环?
答案 0 :(得分:1)
您可以等待用户点击提交按钮:
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"
答案 1 :(得分:0)
我相信您提出的问题是,是否可以让您的硒脚本暂停以进行无法完全自动化的人工互动。
有几种方法可以做到这一点:
容易但hacky的感觉:
在你的python脚本中,输入
import pdb
pdb.set_trace()
在你想为人类暂停的那一刻。这将导致python应用程序下降到调试器。当人类完成他们的事情时,他们可以输入c并按Enter键继续运行selenium脚本。
稍微不那么hacky的感觉(对人类来说更容易)。
在您想要暂停的位置,假设用户提交了某些内容,您可以执行类似的操作(顶部有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
更优雅的方法留给读者练习(我知道那里你应该能够不必忙等待,但我还没有太长时间使用它)