Alexsander Santos
Alexsander Santos

Reputation: 117

Saving pages with Selenium

I will try again.

The code below I copied from another site and the user say it works (shows a screenshot).Original code

I tested the code: No error, but no file save.

All questions use this answer to save a file: A question!

why the page is not saved or, if it is, where is the file?

Thanks

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome(executable_path=r"C:\Program Files (x86)\Selenium\chromedriver.exe")

driver.get("http://www.example.com")

saveas = ActionChains(driver).key_down(Keys.CONTROL).send_keys('S').key_up(Keys.CONTROL)

saveas.perform()

Upvotes: 5

Views: 20739

Answers (2)

Lxander
Lxander

Reputation: 49

from selenium import webdriver

driver = webdriver.Chrome(executable_path=r"C:\Program Files (x86)\Selenium\chromedriver.exe")

driver.get("http://www.example.com")
with open('page.html', 'w+') as f:
    f.write(driver.page_source)

Must work

Upvotes: 4

misantroop
misantroop

Reputation: 2544

If you do the key combination in the browser, you will see this only brings up the 'save page' dialog box. You need to additionally send ALT+S to save the page, in Windows it will be saved in your Downloads folder by default.

saveas = ActionChains(driver).key_down(Keys.CONTROL).send_keys('S').key_up(Keys.CONTROL).send_keys('MyDocumentName').key_down(Keys.ALT).send_keys('S').key_up(Keys.ALT)

EDIT: ActionChains are unreliable. It would be easier not to interact with the browser GUI.

from selenium import webdriver

driver = webdriver.Chrome(executable_path=r"C:\Program Files (x86)\Selenium\chromedriver.exe")

driver.get("http://www.example.com")
with open('page.html', 'w') as f:
    f.write(driver.page_source)

Upvotes: 2

Related Questions