我构建了一个脚本,它以无头模式启动 selenium,并在使用 tkinter 制作的 GUI 上显示一些数据。但是当我编译它时,它启动了一个 webdriver 终端,我似乎无法在任何地方找到解决方案。
我使用的命令:
nuitka --onefile --windows-icon-from-ico=./assets/Icon.ico --plugin-enable=tk-inter --include-data-file=./assets/notification.mp3=. --include-package-data=selenium --mingw64 --standalone --disable-console Testpy
至于网络驱动程序,我在代码中这样使用它:
driver = webdriver.Chrome(options=cls.options)
我还没有尝试过使用 webdriver-manager,因为它需要很多时间来编译,因为我的电脑不太好,我无法一次又一次地编译它。
我已经四处寻找了一段时间,但没有发现任何关于这个问题的信息。
我已经尝试了一堆 nuitka 论点,但它们似乎都不起作用,而且我已经记不清我此时尝试过什么了。我尝试过使用 pyinstaller ,它几乎是一样的。我认为这与 webdriver 有关。
对于 Selenium 版本 4.12,除了以无头模式运行之外,您还可以使用创建标志强制程序不打开任何窗口。
chrome_service.creation_flags = CREATE_NO_WINDOW
然后您可以使用 log_output = os.devnull 来禁用日志记录(这可能是导致终端打开的原因)
这是我的 Firefox 代码,没有打开任何窗口/终端:
from selenium import webdriver
from selenium.webdriver.firefox.service import Service as FirefoxService
options = webdriver.FirefoxOptions()
options.add_argument("--headless")
service = FirefoxService(log_output=os.devnull)
service.creation_flags = CREATE_NO_WINDOW
driver = webdriver.Firefox(service=service, options=options)