引自免费微信小程序:皆我百晓生
从您提供的代码和描述来看,Selenium WebDriver 在执行时闪退,但没有报错。这种情况可能由多种原因导致,我会根据您提供的代码和常见的问题给出一些可能的解决方案。
- 确保所有依赖项都已正确安装:确保您已经正确安装了 Selenium 和对应的浏览器驱动(例如 EdgeDriver)。
- 浏览器驱动版本与浏览器版本匹配:请确保您的浏览器驱动版本与浏览器版本完全匹配。不同版本的浏览器和驱动之间可能存在兼容性问题。
- 处理 WebDriver 对象关闭问题:在您的代码中,每次点击按钮时都会创建一个新的 WebDriver 对象,但没有显式地关闭它。这可能会导致资源未释放,尝试在每次打开新网页后使用
wd.quit()
来关闭浏览器。 - Tkinter 事件循环与 WebDriver 的交互:在 Tkinter 的事件循环中直接使用 WebDriver 可能会导致不稳定。您可以尝试在点击按钮时启动一个新的线程来执行 WebDriver 的操作,以避免与 Tkinter 事件循环的冲突。
下面是修改后的代码示例:
import sys
from selenium import webdriver
from functools import partial
import threading
import tkinter as tk
list_web=['https://www.bilibili.com/','https://codenews.cc/chatgpt','https://www.csdn.net/']
def down(num):
# 启动新线程来处理 WebDriver 的操作
thread = threading.Thread(target=open_website, args=(num,))
thread.start()
def open_website(num):
wd = webdriver.Edge()
wd.implicitly_wait(0.5)
wd.get(list_web[num])
# 在这里进行您的操作...
wd.quit() # 关闭浏览器
f1 = tk.Tk()
f1.geometry("250x100")
f1.resizable(False, False)
a = tk.Button(f1, text="哔哩哔哩", command=partial(down, 0))
a.place(x=20, y=45)
b = tk.Button(f1, text="chatgpt", command=partial(down, 1))
b.place(x=200, y=45)
H = tk.Label(f1, text="克里斯工作室")
H.place(x=90, y=50)
f1.mainloop() # 注意这里是 f1.mainloop(),不是 tk.mainlo
请注意,这里使用了线程来避免与 Tkinter 事件循环的冲突,并在每个网站打开后使用 wd.quit()
关闭浏览器。此外,请确保安装了正确版本的 Edge 驱动,并且它与您的 Edge 浏览器版本匹配。如果问题仍然存在,请提供更多关于您的环境和配置的详细信息,以便我能更准确地帮助您解决问题。