0

After calling webview.start, closing the window, and calling the window.get_cookies function, I am getting this error: KeyError: 'master'

Traceback:

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'

I'm using Python 3.11

My code:

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)



I also tried adding the event handler window.events.closing += on_closing with the function set up like this:

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'
)

But the window crashes, and Windows cannot terminate the process.

1 Answers1

0

what about using cookiejar as in the example below:

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'
)
MUS
  • 9
  • 2