繁体   English   中英

PyWebView关闭window后无法获取cookies

[英]Cannot get cookies after closing window in PyWebView

调用webview.start后,关闭 window,并调用window.get_cookies function,出现此错误: KeyError: 'master'

追溯:

Traceback (most recent call last):
  File "D:\better_gui.py", line 34, in <module>
    )
      
  File "D:\venv-python\Lib\site-packages\webview\window.py", line 36, in wrapper
    return function(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\venv-python\Lib\site-packages\webview\window.py", line 237, in get_cookies
    return self.gui.get_cookies(self.uid)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\venv-python\Lib\site-packages\webview\platforms\winforms.py", line 646, in get_cookies
    window = BrowserView.instances[uid]
             ~~~~~~~~~~~~~~~~~~~~~^^^^^
KeyError: 'master'

我正在使用 Python 3.11

我的代码:

import webview
import sys
import urllib.request

window = webview.create_window(
    sys.argv[2],
    sys.argv[1],
    width=1280,
    height=720,
    min_size=(1280, 720)
)

webview.start(
    private_mode=False,
    storage_path='.\\gui'
)

cookies = window.get_cookies()

url = f'{sys.argv[1]}/close?cookie={cookies}'
urllib.request.urlopen(url)



我还尝试添加事件处理程序window.events.closing += on_closing和 function 设置如下:

import webview
import sys
import urllib.request

def on_closing() -> None:
    cookies = window.get_cookies()

    url = f'{sys.argv[1]}/close?cookie={cookies}'
    urllib.request.urlopen(url)

window = webview.create_window(
    sys.argv[2],
    sys.argv[1],
    width=1280,
    height=720,
    min_size=(1280, 720)
)

window.events.closing += on_closing

webview.start(
    private_mode=False,
    storage_path='.\\gui'
)

但是window崩溃了,Windows无法终止进程。

在下面的示例中使用 cookiejar 怎么样:

import requests
import http.cookiejar
import urllib
    
def on_closing() -> None:
    url = f'{sys.argv[1]}/close?cookie={cookies}'
    urllib.request.urlopen(url)
    cookies = http.cookiejar.CookieJar()
            url_opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookies))
            url_opener.open(url)
            for cookie in cookies:
                print(cookie.name, cookie.value)
window = webview.create_window(
    sys.argv[2],
    sys.argv[1],
    width=1280,
    height=720,
    min_size=(1280, 720)
)

window.events.closing += on_closing

webview.start(
    private_mode=False,
    storage_path='.\\gui'
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM