是否多个QWebEngineView使用相同的网页缓存配置文件



我有多个QWebEngineView实例,每个实例都加载相同的URL(例如:https://*****.com/login(,

widget = Qwidget()
lay= QHBoxLayout()
initialUrl = "https://******.com/login/"
for i in range(3):
frame = QFrame()
web_lay = QVBoxlayout()
webView = QWebEngineView()
webView.load(QUrl(initialUrl))
reload_button = QPushButton(QIcon(":/icons/images/icons/cil-loop"), "", self)
reload_button.setToolTip("reload")
reload_button.clicked.connect(lambda: webView.reload()) 
# This is a wrong way of writing, so each button cannot be corresponding to WebView.
# I write this just to express that I have a corresponding button for each
web_lay.addwidget(webView)
web_lay.addWidget(reload_button)
Frame.setLayout(web_lay)

lay.addwidget(frame)

一旦我登录到QWebEngineView中相应的网站帐户,在刷新其他页面后,显示的页面也会被刷新,刷新(点击重新加载按钮(卸载QWebEngineView中的界面,刷新后的界面就是登录界面。

我所期望的是每个QWebEngineView都可以登录到不同的账户

还有其他人面临这样的问题吗?

问题是,除非另有规定,否则每个QWebEngineView都使用相同的默认QWebEngineProfile。您需要做的是为每个QWebEngineView创建一个唯一的QWebEngineProfile,并创建一个使用该配置文件的QWebEnginePage,并将其分配给QWebEngineView。。。

例如:

from PySide6.QtWebEngineCore import QWebEngineProfile, QWebEnginePage
...
for i in range(3):
storage = "unique/storage/location" + str(i) # <- unique for each iteration
frame = QFrame()
web_lay = QVBoxlayout()
webView = QWebEngineView()
profile = QWebEngineProfile(storage, webview)
page = QWebEnginePage(profile, webview)
webview.setPage(page)
webView.load(QUrl(initialUrl))
...
...

将页面分配给视图后,每个视图将独立运行。每个都将有一个单独的缓存、单独的历史记录、单独的cookie、单独的设置等。

相关内容

  • 没有找到相关文章

最新更新