【发布时间】:2019-11-16 16:11:03
【问题描述】:
我正在使用Qt 和QML 编写一个小应用程序,它使用Qt 文档WebEngine Quick Nano Browser 中的示例。
在此示例中,我尝试访问我的电子邮件。我可以做到,但我正在尝试自动输入用户名和密码,以便我可以立即登录我的电子邮件。
基本上作为一个例子,在启动应用程序后(我的电子邮件地址是硬编码的)我可以看到gmail 的username 页面,但是在这里我必须输入我的用户名才能访问具有password::
在这里我必须输入我的password:
只有在这样做之后,我才能访问我的电子邮件。
预期的结果将是我一运行应用程序,我想直接转到我的电子邮件而不输入username 和password
我正在运行的代码如下:
#include <QtGui/QGuiApplication>
typedef QGuiApplication Application;
#include <QtQml/QQmlApplicationEngine>
#include <QtQml/QQmlContext>
#include <QtWebEngine/qtwebengineglobal.h>
static QUrl startupUrl()
{
QUrl ret;
QStringList args(qApp->arguments());
args.takeFirst();
for (const QString &arg : qAsConst(args)) {
if (arg.startsWith(QLatin1Char('-')))
continue;
ret = Utils::fromUserInput(arg);
if (ret.isValid())
return ret;
}
// first email
return QUrl(QStringLiteral("https://accounts.google.com/signin"));
}
int main(int argc, char **argv)
{
QCoreApplication::setOrganizationName("QtExamples");
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
Application app(argc, argv);
QtWebEngine::initialize();
QQmlApplicationEngine appEngine;
Utils utils;
appEngine.rootContext()->setContextProperty("utils", &utils);
appEngine.load(QUrl("qrc:/ApplicationRoot.qml"));
QMetaObject::invokeMethod(appEngine.rootObjects().first(), "load", Q_ARG(QVariant, startupUrl()));
return app.exec();
}
到目前为止我尝试了什么
我已经做了很多研究,this source 在尝试理解如何对条目进行硬编码的概念方面很有用。但是,我该如何进入下一个
passowrd页面`?This 是另一个使用不同方法的相同问题的示例(尽管在
php中)。这也有助于理解概念和主要思想。this additional source 看起来是一个很好的例子,虽然这里使用了
JavaScript。
现在在阅读了更多信息后,我发现了this post,这让我认为最好的方法是将一些JavaScript 集成到QML 代码中?如果那是正确的路线,我是JavaScript 的新手。如果这是正确的,我该怎么做?
我正在考虑在这个应用程序中使用QNetworkAccessManager,但我不确定如何最好地实现它。
感谢任何可能已经经历过此或可能提供一些指导或示例以说明如何在 WebEngine Quick Nano Browser 中实施此操作的人。
【问题讨论】:
标签: javascript qt qml qt5 qwebengineview