Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium:如何让人在自动化脚本中进行交互?_Python_Selenium - Fatal编程技术网

Python Selenium:如何让人在自动化脚本中进行交互?

Python Selenium:如何让人在自动化脚本中进行交互?,python,selenium,Python,Selenium,我正在编写一个脚本,在弹出窗口中显示验证码和其他一些东西。我正在为FireFox编写脚本。我是否可以输入值,然后点击Submit按钮脚本就可以恢复操作?我想,某种无限循环?我相信您要问的是,是否有可能让您的selenium脚本暂停以进行无法完全自动化的人机交互 有几种方法可以做到这一点: 简单但不易理解的感觉: 在python脚本中,将 import pdb pdb.set_trace() 在你想为人类暂停的时候。这将导致python应用程序下降到调试器。当人类完成了他们的任务后,他们可

我正在编写一个脚本,在弹出窗口中显示验证码和其他一些东西。我正在为FireFox编写脚本。我是否可以输入值,然后点击Submit按钮脚本就可以恢复操作?我想,某种无限循环?

我相信您要问的是,是否有可能让您的selenium脚本暂停以进行无法完全自动化的人机交互

有几种方法可以做到这一点:

简单但不易理解的感觉:

在python脚本中,将

 import pdb 
 pdb.set_trace()
在你想为人类暂停的时候。这将导致python应用程序下降到调试器。当人类完成了他们的任务后,他们可以键入c并点击enter继续运行selenium脚本

稍微少一些烦人的感觉(对人类来说更容易)

在您要暂停的地方,假设用户提交了一些内容,您可以执行以下操作(顶部有一个
导入时间
):


更优雅的方法留给读者作为练习(我知道有一种方法可以让你不用忙着等待,但我已经很久没有用过了)

你可以等待用户点击提交按钮:

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"

什么样的手术?提供更多详细信息我认为您可以使用Selenium wait来等待在单击“提交”按钮后发生的事情,例如加载动画或消息。@Andersson操作,如访问CAPTCHA中的链接等,通常在您提交页面时使用。我想知道它是否会起作用?这就是get_current_url.find(“验证码”)背后的想法;我应该说得更清楚一些:这个想法是验证码页面的URL中有“captcha”一词[如果没有,你可以用其他指标替换它],你会一直等待,直到当前页面不是验证码页面…很抱歉延迟响应。我转移了注意力,忙着做其他事情。它很有魅力
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"