总结记录下用QWebEngineView开浏览器过程中遇到的一些坑
第一次尝试:用JavaScript获取cookie,发现是可以获取cookie的,但是获取不全。代码如下:
static QString g_cookie = "";
void writeCookie(QString strText)
{
QString path = QCoreApplication::applicationDirPath();
path.append("/cookies/cookie.txt");
//创建文件对象
QFile file(path);
//打开文件,只写方式
bool error = file.open(QIODevice::WriteOnly | QIODevice::Truncate);
if(error)
{
QByteArray data = strText.toLatin1();
file.write(data);
file.close();
}
}
void MyWebEngineView::getCookieByJavaScript()
{
this->page()->runJavaScript("function GetCookie(){return document.cookie}");
this->page()->runJavaScript("GetCookie();",[](const QVariant& v){
QString strCookie = "";
strCookie = v.toString();
g_cookie = strCookie;
qDebug()<<g_cookie;
writeCookie(strCookie);
});
}
QString MyWebEngineView::readCookie()
{
QString path = QCoreApplication::applicationDirPath();
path.append("/cookies/cookie.txt");
qDebug()<<path;
QString strCookie = "";
QFile file(path);
bool error = file.open(QIODevice::ReadWrite);
if(error)
{
QByteArray data = file.readAll();
strCookie.append(data);
qDebug()<<"-------------- readCookie start ---------------";
qDebug()<<strCookie.size()<<strCookie;
qDebug()<<"-------------- readCookie end ---------------";
file.close();
}
return strCookie;
}
第二次尝试:重写
QWebEngineUrlRequestInterceptor