Ключевой «трюк» заключается в том, что мы можем выполнить 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(); „)“, но нужно некоторые из этой установки в инициализации в сделайте его гладким, поэтому я подумал, что я приведу более полный пример. Я думаю, что трюк один в комментарии выше, поэтому некоторые кредиты должны туда тоже.
Вы хотите получить источник html: ['browser.page_source'] (http://stackoverflow.com/a/7957176/4279)? Или вы хотите удалить мертвое дерево: ['browser.execute_script ('window.print()')'] (http://stackoverflow.com/a/5585345/4279)? – jfs