• selenium闪退但没有报错


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 人行道出风头 2024-07-27 17:23 采纳率: 0% 浏览 5 首页/ 编程语言 / selenium闪退但没有报错 pythonselenium seleniumselenium闪退但没有报错,浏览器驱动与浏览器版本匹配 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 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    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 浏览器版本匹配。如果问题仍然存在,请提供更多关于您的环境和配置的详细信息,以便我能更准确地帮助您解决问题。

      展开全部

      评论 编辑记录
      编辑
      预览

      报告相同问题?

    • 相关阅读:
      【云原生之k8s】K8s 管理工具 kubectl 详解(二)
      C/C++轻量级并发TCP服务器框架Zinx-游戏服务器开发002:框架学习-按照三层结构模式重构测试代码+Tcp数据适配+时间轮定时器
      用于时间触发的嵌入式软件的IDE
      Centos Nginx SSL 配置
      【学习笔记】最短路 +生成树
      详细讲解一下JVM的内存模型与实现?
      计算机图形学(八):三维对象的表示(常用的三维几何建模方法)
      Java中的多线程概述、多线程实现、线程类常见的方法与线程安全问题详细使用(多线程上篇含Lock锁同步方法同步代码块)
      零基础Linux_14(基础IO_文件)缓冲区+文件系统inode等
      oracle入门笔记五
    • 原文地址:https://ask.csdn.net/questions/8133363