等待图片全部加载然后打印PDF,未成功

import sys

import os
import json

import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys

appState = {
    "recentDestinations": [
        {
            "id": "Save as PDF",
            "origin": "local",
            "account": ""
        }
    ],
    "selectedDestinationId": "Save as PDF",
    "version": 2
}
profile = {'printing.print_preview_sticky_settings.appState': json.dumps(appState),
           'savefile.default_directory': os.path.abspath('static')  # 必须传绝对路径
           }


if __name__ == "__main__":  # 参考示例https://editor.csdn.net/md/?articleId=115913189

    chromeOptions = webdriver.chrome.options.Options()
    # chromeOptions.page_load_strategy = 'none'
    chromeOptions.add_experimental_option('prefs', profile)
    chromeOptions.add_argument('--kiosk-printing')
    chromeOptions.add_argument("start-maximized")
    chromeOptions.binary_location = r".\Chrome\chrome.exe"
    driver = webdriver.Chrome('chromedriver.exe', options=chromeOptions)  # https://chromedriver.chromium.org/downloads
    driver.get('https://mp.weixin.qq.com/s/qrD0WEZpRdxROLgzSsKdMg')
    # driver.get('https://evisaforms.state.gov/Instructions/ACSSchedulingSystem.asp')

    # driver.execute_script('document.title="{} {}";'.format(appointmentDetail.firstName, appointmentDetail.surname))  # 设置PDF文件名

    while True:
        imgStatusList = []
        images = driver.execute_script('''return document.images''')

        if images:
            for imgElement in driver.execute_script('''return document.images'''):
                imgStatusList.append(bool(imgElement.get_attribute("complete")))
            print(imgStatusList)
            if all(imgStatusList):
                driver.execute_script('window.print();')
                break
        else:
            print('no images')

        # for driver.execute_script('''
        #     imgStatusList = []
        #     Array.from(document.images).forEach(function(img) {
        #                             imgStatusList.push(img.complete)
        #                     });

        #     ''')

可能的解决方法https://stackoverflow.com/questions/47832693/is-there-a-way-with-python-selenium-to-wait-until-all-elements-of-a-page-has-loa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值