繁体   English   中英

Python - Selenium:提交表单而不打开新选项卡或新窗口

[英]Python - Selenium : Submit form without opening new tab or new window

我有 :

driver = webdriver.Firefox()

我有一些网址: 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中代码具有<form ... id = someID ... target = "_blank" ,并且表单元素具有一些标识符,则可以手动更改此属性。

这将在下次提交时在新窗口中打开表单:

Browser.execute_script(
    'document.getElementById("someID").setAttribute("target", "_blank")'
)

如果,当你问,你需要有形式在打开一个新的窗口,只需更改_blank_self (当然, someID是实际表单ID的占位符)

Browser是Selenium WebDriver,它在里面执行javaScript代码,它将表单的属性更改为所需的属性。 如果表单没有唯一ID,则可能有另一个标识属性。

希望这有帮助! 我今天发现了这个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM