<i id='5JNtP'><tr id='5JNtP'><dt id='5JNtP'><q id='5JNtP'><span id='5JNtP'><b id='5JNtP'><form id='5JNtP'><ins id='5JNtP'></ins><ul id='5JNtP'></ul><sub id='5JNtP'></sub></form><legend id='5JNtP'></legend><bdo id='5JNtP'><pre id='5JNtP'><center id='5JNtP'></center></pre></bdo></b><th id='5JNtP'></th></span></q></dt></tr></i><div id='5JNtP'><tfoot id='5JNtP'></tfoot><dl id='5JNtP'><fieldset id='5JNtP'></fieldset></dl></div>

      • <bdo id='5JNtP'></bdo><ul id='5JNtP'></ul>

    1. <legend id='5JNtP'><style id='5JNtP'><dir id='5JNtP'><q id='5JNtP'></q></dir></style></legend>

    2. <tfoot id='5JNtP'></tfoot>

      <small id='5JNtP'></small><noframes id='5JNtP'>

      如何在 Selenium (Python) 中将打开的页面保存为 pd

      时间:2023-10-08
      <i id='epMFv'><tr id='epMFv'><dt id='epMFv'><q id='epMFv'><span id='epMFv'><b id='epMFv'><form id='epMFv'><ins id='epMFv'></ins><ul id='epMFv'></ul><sub id='epMFv'></sub></form><legend id='epMFv'></legend><bdo id='epMFv'><pre id='epMFv'><center id='epMFv'></center></pre></bdo></b><th id='epMFv'></th></span></q></dt></tr></i><div id='epMFv'><tfoot id='epMFv'></tfoot><dl id='epMFv'><fieldset id='epMFv'></fieldset></dl></div>
            <tbody id='epMFv'></tbody>
        1. <tfoot id='epMFv'></tfoot>

              <legend id='epMFv'><style id='epMFv'><dir id='epMFv'><q id='epMFv'></q></dir></style></legend>

              <small id='epMFv'></small><noframes id='epMFv'>

                <bdo id='epMFv'></bdo><ul id='epMFv'></ul>
                本文介绍了如何在 Selenium (Python) 中将打开的页面保存为 pdf的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                我已经尝试了所有可以在 Internet 上找到的解决方案,以便能够在 Python 中打印在 Selenium 中打开的页面.但是,当打印弹出窗口出现时,一两秒后它消失了,没有保存任何 PDF.

                Have tried all the solutions I could find on the Internet to be able to print a page that is open in Selenium in Python. However, while the print pop-up shows up, after a second or two it goes away, with no PDF saved.

                这是正在尝试的代码.基于此处的代码 - https://stackoverflow.com/a/43752129/3973491

                Here is the code being tried. Based on the code here - https://stackoverflow.com/a/43752129/3973491

                使用 Mojave 10.14.5 在 Mac 上编码.

                Coding on a Mac with Mojave 10.14.5.

                from selenium import webdriver
                from selenium.webdriver.support.select import Select
                from selenium.webdriver.common.by import By
                from selenium.webdriver.support.ui import WebDriverWait
                from selenium.webdriver.support import expected_conditions as EC
                from selenium.common.exceptions import NoSuchElementException
                from selenium.common.exceptions import TimeoutException
                from selenium.webdriver.chrome.options import Options
                from selenium.common.exceptions import WebDriverException
                import time
                import json
                
                options = Options()
                appState = {
                    "recentDestinations": [
                        {
                            "id": "Save as PDF",
                            "origin": "local"
                        }
                    ],
                    "selectedDestinationId": "Save as PDF",
                    "version": 2
                }
                
                profile = {'printing.print_preview_sticky_settings.appState': json.dumps(appState)}
                # profile = {'printing.print_preview_sticky_settings.appState':json.dumps(appState),'savefile.default_directory':downloadPath}
                options.add_experimental_option('prefs', profile)
                options.add_argument('--kiosk-printing')
                CHROMEDRIVER_PATH = '/usr/local/bin/chromedriver'
                
                driver = webdriver.Chrome(options=options, executable_path=CHROMEDRIVER_PATH)
                driver.implicitly_wait(5)
                driver.get(url)
                driver.execute_script('window.print();')
                

                $chromedriver --v
                ChromeDriver 75.0.3770.90 (a6dcaf7e3ec6f70a194cc25e8149475c6590e025-refs/branch-heads/3770@{#1003})
                

                关于如何将打开的 html 页面打印为 PDF 的任何提示或解决方案.花了几个小时试图完成这项工作.谢谢!

                Any hints or solutions as to what can be done to print the open html page to a PDF. Have spent hours trying to make this work. Thank you!

                2019-07-11 更新:

                Update on 2019-07-11:

                我的问题已被确定为重复,但是 a) 另一个问题似乎是使用 javascript 代码,并且 b) 答案不能解决这个问题中提出的问题 - 这可能与更新的软件有关版本.正在使用的 Chrome 版本是版本 75.0.3770.100 (Official Build) (64-bit),chromedriver 是 ChromeDriver 75.0.3770.90.在 Mac OS Mojave 上.脚本在 Python 3.7.3 上运行.

                My question has been identified as a duplicate, but a) the other question seems to be using javascript code, and b) the answer does not solve the problem being raised in this question - it may be to do with more recent software versions. Chrome version being used is Version 75.0.3770.100 (Official Build) (64-bit), and chromedriver is ChromeDriver 75.0.3770.90. On Mac OS Mojave. Script is running on Python 3.7.3.

                2019-07-11 更新:

                Update on 2019-07-11:

                把代码改成

                from selenium import webdriver
                import json
                
                chrome_options = webdriver.ChromeOptions()
                settings = {
                    "appState": {
                        "recentDestinations": [{
                            "id": "Save as PDF",
                            "origin": "local",
                            "account": "",
                        }],
                        "selectedDestinationId": "Save as PDF",
                        "version": 2
                    }
                }
                prefs = {'printing.print_preview_sticky_settings': json.dumps(settings)}
                chrome_options.add_experimental_option('prefs', prefs)
                chrome_options.add_argument('--kiosk-printing')
                CHROMEDRIVER_PATH = '/usr/local/bin/chromedriver'
                driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=CHROMEDRIVER_PATH)
                driver.get("https://google.com")
                driver.execute_script('window.print();')
                driver.quit()
                

                而现在,什么也没有发生.Chrome 启动,加载 url,出现打印对话框,但似乎什么都没有发生 - 默认打印机队列中没有任何内容,也没有 pdf - 我什至通过在 Mac 上查找最近的文件"来搜索 PDF 文件.

                And now, nothing happens. Chrome launches, loads url, print dialog appears but then nothing seems to happen - nothing in the default printer queue, and no pdf either - I even searched for the PDF files by looking up "Recent Files" on Mac.

                推荐答案

                答案 这里,当我的操作系统中没有任何其他打印机设置时工作.但是当我有另一个默认打印机时,这不起作用.

                The answer here, worked when I did not have any other printer setup in my OS. But when I had another default printer, this did not work.

                我不明白怎么做,但是以这种方式进行小的更改似乎可行.

                I don't understand how, but making small change this way seems to work.

                from selenium import webdriver
                import json
                
                chrome_options = webdriver.ChromeOptions()
                settings = {
                       "recentDestinations": [{
                            "id": "Save as PDF",
                            "origin": "local",
                            "account": "",
                        }],
                        "selectedDestinationId": "Save as PDF",
                        "version": 2
                    }
                prefs = {'printing.print_preview_sticky_settings.appState': json.dumps(settings)}
                chrome_options.add_experimental_option('prefs', prefs)
                chrome_options.add_argument('--kiosk-printing')
                CHROMEDRIVER_PATH = '/usr/local/bin/chromedriver'
                driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=CHROMEDRIVER_PATH)
                driver.get("https://google.com")
                driver.execute_script('window.print();')
                driver.quit()
                

                这篇关于如何在 Selenium (Python) 中将打开的页面保存为 pdf的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:在 chromedriver 中使用 python 绑定为 selenium 设置 c 下一篇:如何在 selenium chromedriver 中使用经过身份验证的代

                相关文章

                最新文章

                <i id='5XrY5'><tr id='5XrY5'><dt id='5XrY5'><q id='5XrY5'><span id='5XrY5'><b id='5XrY5'><form id='5XrY5'><ins id='5XrY5'></ins><ul id='5XrY5'></ul><sub id='5XrY5'></sub></form><legend id='5XrY5'></legend><bdo id='5XrY5'><pre id='5XrY5'><center id='5XrY5'></center></pre></bdo></b><th id='5XrY5'></th></span></q></dt></tr></i><div id='5XrY5'><tfoot id='5XrY5'></tfoot><dl id='5XrY5'><fieldset id='5XrY5'></fieldset></dl></div>

                <tfoot id='5XrY5'></tfoot>

                <legend id='5XrY5'><style id='5XrY5'><dir id='5XrY5'><q id='5XrY5'></q></dir></style></legend>

                      <bdo id='5XrY5'></bdo><ul id='5XrY5'></ul>
                  1. <small id='5XrY5'></small><noframes id='5XrY5'>