首页 > 解决方案 > 拍摄 selenium 屏幕截图并在 tkinter gui 上显示

问题描述

我正在尝试截取 selenium 页面的屏幕截图并将其显示在我的 tkinter gui 上的画布上,但由于某种原因,我得到了错误:

TypeError: __str__ returned non-string (type bytes)

这是代码,提前感谢您的帮助

from tkinter import *
import tkinter as tk
import time
from selenium import webdriver

root = tk.Tk()
root.geometry('700x700')


def picture():
    browser = webdriver.Chrome('C:\\Users\\Downloads\\chromedriver_win324\\chromedriver.exe')
    browser.get('https://google.co.uk')
    fil = browser.get_screenshot_as_png()
    img = PhotoImage(fil)
    canvas = Canvas(root, width=300,height=300)
    canvas.place(x=12.5,y=450)
    canvas.create_image(20,20, image=img)

Button(root, text='Start', command=lambda: picture()).pack()
root.mainloop()

标签: pythonseleniumtkinterselenium-chromedriverscreenshot

解决方案


问题是您试图将数据用作 的第一个位置参数PhotoImage,但第一个位置参数用于名称而不是图像本身。

您需要提供数据作为data属性的值:

img = PhotoImage(data=fil)

推荐阅读