Python-Selenium:在不打开新选项卡或新窗口的情况下提交表单

Python-Selenium:在不打开新选项卡或新窗口的情况下提交表单,python,selenium,selenium-webdriver,web-crawler,Python,Selenium,Selenium Webdriver,Web Crawler,我有: driver = webdriver.Firefox() 我有一些url:driver.get(url) 我想提交一份表格: elt = driver.find_element_by_class_name('special_class') driver.find_element_by_xpath('//button').click() 这将打开一个新窗口,我希望所有事情都发生在一个窗口中 我可能需要多次提交类似的内容,然后解析输出 有没有办法呆在同一个窗口?我不想打开很多窗户 提前谢

我有:

driver = webdriver.Firefox()
我有一些url:
driver.get(url)

我想提交一份表格:

elt = driver.find_element_by_class_name('special_class')
driver.find_element_by_xpath('//button').click()
这将打开一个新窗口,我希望所有事情都发生在一个窗口中

我可能需要多次提交类似的内容,然后解析输出

有没有办法呆在同一个窗口?我不想打开很多窗户


提前谢谢。

如果表单提交后按钮打开新窗口,恐怕您无能为力。我想到的唯一一件事就是使用无头浏览器,比如PhantomJS——既然你在做网页爬行,你也会欣赏它的速度。请参阅Python教程

但我实际上记得有一个解决方法,你可以将Firefox
browser.link.open_newwindow
设置为
1
,这应该会导致在当前窗口中打开每个新窗口。但是,我不确定这是否适用于HTML
form

fp = webdriver.FirefoxProfile()
fp.set_preference("browser.link.open_newwindow", 1)
browser = webdriver.Firefox(firefox_profile=fp)

有关此功能,请参见参考。

这实际上取决于表单的提交方式。如果在HTML中,代码
谢谢你的回答。我想可能有一个参数我可以在开始时初始化,以避免打开新窗口。我不知道幻影会增加爬行的速度。到目前为止,我只尝试了Firefox和Chrome。看到我的编辑,我实际上想起了一种方法。非常感谢。这就是我要找的。实际上,由于窗体的原因,这并不像您所说的那样有效,但我使用driver.window\u句柄和driver.switch\u to\u window来处理不同的窗口。(且不超过两扇窗户)
Browser.execute_script(
    'document.getElementById("someID").setAttribute("target", "_blank")'
)