![](/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.