Python - Selenium - 打印网页

时间:2014-02-19 16:13:33

标签: python selenium python-3.x printing webpage

如何使用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 m

2 个答案:

答案 0 :(得分:3)

虽然不是直接打印网页,但很容易截取整个当前页面的屏幕截图:

browser.save_screenshot("screenshot.png")

然后可以使用任何图像打印库打印图像。我没有亲自使用任何这样的库,所以我不一定能保证它,但是快速搜索win32print看起来很有希望。

答案 1 :(得分:2)

关键的“技巧”是我们可以使用selenium webdriver的“execute_script”方法在selenium浏览器窗口中执行JavaScript,如果执行JavaScript命令“window.print();”它将激活浏览器打印功能。

现在,让它优雅地工作需要设置一些首选项以静默打印,删除打印进度报告等。这是一个小但功能性的示例,它加载并打印您放在最后一行的任何网站(其中'{ {3}}'现在是):

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();“)”但是需要在 init 中进行一些设置才能使其顺利运行我以为我会举一个更全面的例子。我认为仅仅是上面的评论中的诀窍,所以一些信用也应该去那里。