我想用QWebEngine包装一个网站,这样我就可以使用Qt的事件过滤器来调整输入命令,甚至更多。该网站需要用户名/电子邮件和密码,我想确保我可以处理输入的文本在我的一端,发送字符串要在网页上填写,然后编程按同一页上的登录按钮。
我找到了此页,建议使用一个QWebChannel和一些定制的javascript来实现这个功能。我知道如何通过Firefox的Web检查工具获取我想要填充的元素的信息,但我不知道如何填写
QWebChannel中运行的自定义JS代码这里没有url参数之类的,如果我查看在浏览器中实际按下“登录”时发送的POST请求是什么样子的话,信息就会以某种方式被编码,所以此时复制实际发送的数据似乎是不可行的。
发布于 2016-07-13 12:59:30
在我的登录页面中有两个变量:用户名、用户密码。您可以使用runJavaScript form QWebEnginePage评估您的js:
ui->webView->page()->runJavaScript(QString("document.getElementById('username').value = '%1'").arg("example"));
ui->webView->page()->runJavaScript(QString("document.getElementById('password').value = '%1'").arg("example"));要按用户获取插入的文本,可以使用:
ui->webView->page()->runJavaScript(QString("document.getElementById('username').value"),
[this](const QVariant& res) {
qDebug() << "Username = " << res.toString();
});现在,只需调用您的登录按钮,并模拟点击事件,发布事件.
ui->webView->page()->runJavaScript(QString("document.getElementById("%1").click()).arg("example"));我使用它自动登录我的页面,以获得会话令牌或cookie。
https://stackoverflow.com/questions/37397155
复制相似问题