如何使用python与打印框进行交互

时间:2018-09-11 02:14:30

标签: python selenium web-scraping printing automation

我一直在使用硒来自动打印文档,并且卡在了打印屏幕上。据我所知,硒不与打印屏幕相互作用,因此我正在寻找可以与硒一起使用的替代情况。到目前为止,我的代码在下面,而我所需要的只是可以让我选择新打印机然后进行打印的代码。另外,我想将打印机更改为“另存为PDF”,然后将pdf保存到文件中,因此,如果这给了我一个捷径,将大有帮助。

from selenium import webdriver
from selenium import *
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Remote(
         command_executor='http://127.0.0.1:4444/wd/hub',
         desired_capabilities=DesiredCapabilities.CHROME) #This is because I am using remote web driver for my Mac, but it is the same as regular web driver

driver.execute("window.print()")

#Need code here

2 个答案:

答案 0 :(得分:0)

找到了一条可能对您有用的建议。 How to convert webpage into PDF by using Python

也许尝试pdfkit

import pdfkit
pdfkit.from_url('http://google.com', 'out.pdf')

答案 1 :(得分:0)

我使用window.print(),然后执行包含必需的js命令的python字符串: print_function = ''' let A = document.getElementsByTagName('print-preview-app')[0].shadowRoot; let B = A.getElementById('sidebar').children[0].shadowRoot; let C = B.getElementById('button-strip').children[0] C.click() ''' driver.execute_script(print_function)

请记住,您还需要使用driver.swich_to.window(window_handles [i])来确保与打印盒进行交互。

一旦您输入了shadowRoot元素,您就没有完全可用的driver.find_element_by方法。在shadowRoot中搜索时,您只能使用通过JS提供的方法。