我使用 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")
但似乎都不起作用。
可以通过 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)