2014-02-19 5 views
3

Как распечатать веб-страницу с помощью селена, пожалуйста.Python - Selenium - Печать веб-страницы

import time 
from selenium import webdriver 

# Initialise the webdriver 
chromeOps=webdriver.ChromeOptions() 
chromeOps._binary_location = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" 
chromeOps._arguments = ["--enable-internal-flash"] 
browser = webdriver.Chrome("C:\\Program Files\\Google\\Chrome\\Application\\chromedriver.exe", port=4445, chrome_options=chromeOps) 
time.sleep(3) 

# Login to Webpage 
browser.get('www.webpage.com') 

Примечание: Я использую в настоящее время, текущая версия Google Chrome: Версия 32.0.1700.107 м

+1

Вы хотите получить источник html: ['browser.page_source'] (http://stackoverflow.com/a/7957176/4279)? Или вы хотите удалить мертвое дерево: ['browser.execute_script ('window.print()')'] (http://stackoverflow.com/a/5585345/4279)? – jfs

ответ

3

Хотя это не прямой печати веб-страницы, легко сделать скриншот всего текущая страница:

browser.save_screenshot("screenshot.png") 

Затем изображение можно распечатать, используя любую библиотеку для печати изображений. Я лично не использовал такую ​​библиотеку, поэтому я не могу ее ручаться, но быстрый поиск оказался win32print, который выглядит многообещающим.

1

Ключевой «трюк» заключается в том, что мы можем выполнить JavaScript в окне браузера селена с использованием метода «execute_script» веб-редактора selenium, и если вы выполните команду JavaScript «window.print();» он активирует функцию печати браузеров.

Теперь, чтобы заставить его работать элегантно, необходимо установить несколько настроек для печати без печати, удалить отчет о прогрессе печати и т. Д. Вот небольшой, но функциональный пример, который загружает и печатает любой веб-сайт, который вы помещаете в последнюю строку (где " http://www.cnn.com/ 'сейчас):

import time 
from selenium import webdriver 
import os 

class printing_browser(object): 
    def __init__(self): 
     self.profile = webdriver.FirefoxProfile() 
     self.profile.set_preference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", False) 
     self.profile.set_preference("pdfjs.disabled", True) 
     self.profile.set_preference("print.always_print_silent", True) 
     self.profile.set_preference("print.show_print_progress", False) 
     self.profile.set_preference("browser.download.show_plugins_in_list",False) 
     self.driver = webdriver.Firefox(self.profile) 
     time.sleep(5) 

    def get_page_and_print(self, page): 
     self.driver.get(page) 
     time.sleep(5) 
     self.driver.execute_script("window.print();") 

if __name__ == "__main__": 
    browser_that_prints = printing_browser() 
    browser_that_prints.get_page_and_print('http://www.cnn.com/') 

ключ команды вы, вероятно, отсутствует был „self.driver.execute_script (“ window.print(); „)“, но нужно некоторые из этой установки в инициализации в сделайте его гладким, поэтому я подумал, что я приведу более полный пример. Я думаю, что трюк один в комментарии выше, поэтому некоторые кредиты должны туда тоже.

Смежные вопросы