簡體   English   中英

使用Python Selenium保存網頁

[英]Save a Web Page with Python Selenium

我正在使用selenium webdriver for Python 2.7:

  1. 啟動瀏覽器: browser = webdriver.Firefox()

  2. 轉到某個網址: browser.get('http://www.google.com')

此時,如何向瀏覽器發送“另存頁面”命令?

注意:這不是我感興趣的網頁源。我想使用實際的'Save Page As'Firefox命令保存頁面,這會產生與保存網頁源不同的結果。

不幸的是,你無法做你想做的Selenium。 您可以使用page_source來獲取html,但這就是您將獲得的所有內容。

不幸的是,當您保存時,Selenium無法與提供給您的Dialog交互。

你可以執行以下操作來獲得對話框,但是你需要像AutoIT這樣的東西來完成它

from selenium.webdriver.common.action_chains import ActionChains

saveas = ActionChains(driver).key_down(Keys.CONTROL)\
         .send_keys('s').key_up(Keys.CONTROL)
saveas.perform()

我有一個類似的問題並且最近解決了它:

@AutomatedTester給出了一個不錯的答案,但他的答案並沒有解決問題,你還需要再次按Enter鍵才能完成這項工作。

因此,我們需要Python為我們再按一次Enter。

在以下主題中關注@NoctisSkytower的回答:

Python模擬keydown

復制他對類的定義,然后將以下內容添加到@AutomatedTester的答案中:

SendInput(Keyboard(VK_RETURN))
time.sleep(0.2)
SendInput(Keyboard(VK_RETURN, KEYEVENTF_KEYUP))

您可能還想查看以下鏈接:

selenium web驅動程序如何知道新窗口何時打開然后恢復執行

您可能會遇到彈出窗口,此線程會告訴您要執行此操作。

如果您使用的是Linux,則可以使用xte 安裝

sudo apt-get install xautomation

第一。

from subprocess import Popen, PIPE

save_sequence = """keydown Control_L
key S
keyup Control_L
"""


def keypress(sequence):
    p = Popen(['xte'], stdin=PIPE)
    p.communicate(input=sequence)

keypress(save_sequence)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM