人行道出风头 2024-07-27 17:23 采纳率: 0%
浏览 9

selenium闪退但没有报错

selenium
selenium闪退但没有报错,浏览器驱动与浏览器版本匹配

import sys
from selenium import webdriver
from functools import partial
import tkinter as tk
list_web=['https://www.bilibili.com/','https://codenews.cc/chatgpt','https://www.csdn.net/']

def down (num):
    wd = webdriver.Edge()
    # 隐式等待,防止程序过快而网页反应不过来(0.5s)
    wd.implicitly_wait(0.5)
    # 调用webDriver 对象的get方法,可以让浏览器打开指定网址
    wd.get(list_web[num])

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)
a=tk.Button(f1,text="chatgpt",command=partial(down, 1))
a.place(x=200,y=45)
H=tk.Label(f1,text="克里斯工作室")
H.place(x=90,y=50)
tk.mainlo

  • 写回答

1条回答 默认 最新

  • 专家-司宇[在线] 2024-07-27 17:23
    关注

    引自免费微信小程序:皆我百晓生

    从您提供的代码和描述来看,Selenium WebDriver 在执行时闪退,但没有报错。这种情况可能由多种原因导致,我会根据您提供的代码和常见的问题给出一些可能的解决方案。

    1. 确保所有依赖项都已正确安装:确保您已经正确安装了 Selenium 和对应的浏览器驱动(例如 EdgeDriver)。
    2. 浏览器驱动版本与浏览器版本匹配:请确保您的浏览器驱动版本与浏览器版本完全匹配。不同版本的浏览器和驱动之间可能存在兼容性问题。
    3. 处理 WebDriver 对象关闭问题:在您的代码中,每次点击按钮时都会创建一个新的 WebDriver 对象,但没有显式地关闭它。这可能会导致资源未释放,尝试在每次打开新网页后使用 wd.quit() 来关闭浏览器。
    4. 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 浏览器版本匹配。如果问题仍然存在,请提供更多关于您的环境和配置的详细信息,以便我能更准确地帮助您解决问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月27日

悬赏问题

  • ¥15 微信小程序跳转关联公众号
  • ¥15 Java AES 算法 加密采用24位向量报错如何处理?
  • ¥15 使用X11可以找到托盘句柄,监控到窗口点击事件但是如何在监听的同时获取托盘中应用的上下文菜单句柄
  • ¥45 字符串操作——数组越界问题
  • ¥15 Loss下降到0.08时不在下降调整学习率也没用
  • ¥15 QT+FFmpeg使用GPU加速解码
  • ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?
  • ¥15 来个会搭建付费网站的有偿
  • ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏
  • ¥15 以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。