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