有没有办法将selenium chrome(驱动程序)窗口嵌入到tkinter窗口中?

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

这里是初学者。我正在使用 Tkinter 来操作 Selenium。日志和其他信息也部分显示在 Tkinter 中,但当我使用它时,这两个窗口处理起来变得很麻烦。请告诉我是否有办法将它们合二为一。

从我的角度来看,我在我的历史中写了很长的代码,如果可能的话,我不想使用像我在搜索中看到的那样的非硒浏览工具(我不想从头开始重写它)。

供参考,我的代码中使用的库如下:

from time import sleep
import sys
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

import tkinter as tk
from tkinter import scrolledtext
from tkinter import ttk
from tkinter import *
import threading
import queue
import os
from datetime import datetime
import configparser
import errno

谢谢!

我尝试过: 我已经询问了 Chat GPT 并搜索了这个网站等,但我一直无法找到将 Selenium 和 Tkinter 窗口合并在一起的方法。

python-3.x selenium-webdriver tkinter selenium-chromedriver
1个回答
0
投票

说实话,你无法将任何现代网络浏览器嵌入到 tkinter 窗口中,有一个项目嵌入了 chromium(不再是了):来源:cef python

原因 要渲染到 tkinter,浏览器必须支持渲染到窗口 id(如果支持,那么您可以通过将

tkinter.winfo_id()
传递给网络浏览器来渲染它)。但据我所知,当前没有任何可以更新的模块或代码用于将任何网络浏览器嵌入到 tkinter 中。因此您无法在 tkinter 中运行 chrome。

总结

  • tkinter 唯一的官方网络浏览器在很多年前就已更新,它甚至不支持现代 html 或 js 来源:tkhtml
  • 能够在 tkinter 中运行 chromium(chrome) 的项目已经 3 年没有更新了,并且不支持较新的 python 版本。来源:cef python
  • 因此,由于 chromium(chrome) 无法嵌入到 tkinter,因此您无法在 tkinter 窗口内使用 selenium chrome 驱动程序(窗口)。

我对此做了很多研究,唯一可能的方法是使用 Gecko (并使 selenium 使用 Gecko(Firefox)),但它从来都不是简单的,你实际上可能需要编译 Gecko 并嵌入它并创建你自己的 api与selenium通信。而且它会导致可执行文件大小很大。所以使用另一个gui而不是tkinter(因为它运行现代浏览器已经很老了)

或者你可以制作类似你自己的 api :) 就像这个 tkinter 视频播放器(带声音),但使用 tkinter 实际上是不可能的:tkinter 带声音视频播放器

如果这个答案对你有帮助,还请点赞:)

© www.soinside.com 2019 - 2024. All rights reserved.