![](/img/trans.png)
[英]How to change URL in Selenium without opening new tab (python)?
[英]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.