Python Selenium Web 驱动程序抑制 tkinter 应用程序中的控制台窗口

问题描述 投票:0回答:1

我使用 tkinter 库制作了一个简单的 GUI。当用户单击按钮时,脚本将打开一个新线程,其中硒库开始在网页上执行自动单击:

def start_button3_callback(self):

# create a new thread to run the button3_callback function in the background
t = threading.Thread(target=self.button3_callback)
t.start()

这就是我在用户单击按钮3后使用selenium启动浏览器的方式

button3_callback:

options = webdriver.EdgeOptions()
options.add_argument("--disable-exit-on-background")
driver = webdriver.Edge(options=options)

我使用 cmd 和 pyinstaller 编译了这样的应用程序:

pyinstaller --onefile --name Edge_Script -w --icon=myIcon_9.ico --add-binary "myIcon_9.ico;." --noconsole main.py

我想启动 selenium 脚本而不产生额外的控制台窗口。我希望为用户隐藏此控制台窗口。但是,当用户启动 start_button3_callback 时,会生成一个具有此文件位置 .cache\selenium\msedgedriver\win64N.0.1938.69 的控制台。

我试图在 pyinstaller 中使用“--noconsole”,但它似乎并没有抑制窗口的生成。

我也尝试添加此选项:

options.add_argument("--log-level=OFF")

但似乎都不起作用。

python selenium-webdriver tkinter console microsoft-edge
1个回答
0
投票

可以通过 CREATE_NO_WINDOW 标志来避免窗口。另外,您需要为此标志导入服务:

from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService 
from subprocess import CREATE_NO_WINDOW

edge_service = EdgeService('/path/to/edgedriver')
# Use `edge_service.creationflags` instead for selenium < 4.6
edge_service.creation_flags = CREATE_NO_WINDOW

driver = webdriver.Edge(service=edge_service)
© www.soinside.com 2019 - 2024. All rights reserved.