簡體   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