- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Qt
和 QML
编写一个小型应用程序,该应用程序使用 Qt 文档中的示例 WebEngine Quick Nano Browser .
在这个例子中,我试图访问我的电子邮件。我可以做到,但我正在尝试自动输入用户名和密码,以便我可以立即登录我的电子邮件。
基本上作为一个例子,启动应用程序后(我的电子邮件地址是硬编码的)我可以看到 gmail
的 username
页面,但在这里我必须输入我的用户名访问具有 密码
::
在这里我必须输入我的密码
:
只有这样做之后我才能访问我的电子邮件。
预期的结果是我一运行应用程序,我想直接转到我的电子邮件而不输入用户名
和密码
我正在运行的代码如下:
#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
中实现此操作的任何人,非常感谢。
最佳答案
不要使用示例 WebEngine Quick Nano Browser,因为我认为它没有必要,只会分散背景目标。
逻辑是了解google登录是如何工作的,在这种情况下你必须找到一种方法来使用javascript获取DOM的元素,例如通过id、class、name等,并根据需要的逻辑对其进行修改。另请注意,网址会发生变化,因此必须在每个网址中执行不同的脚本。
综合以上,解决方案是:
import QtQuick 2.13
import QtQuick.Controls 2.13
import QtWebEngine 1.9
ApplicationWindow{
id: root
width: 640
height: 480
visible: true
property string username: "USERNAME"
property string password: "PASSWORD"
QtObject{
id: internals
property string script_username: "
setTimeout(function() {
var input_username = document.getElementById('identifierId');
input_username.value = '%1';
var button = document.getElementById('identifierNext');
button.click();
}, 1000);
".arg(username)
property string script_password: "
setTimeout(function() {
var input_password = document.getElementsByName('password')[0];
input_password.value = '%1';
var button = document.getElementById('passwordNext');
button.click();
}, 1000);
".arg(password)
}
WebEngineView {
id: view
anchors.fill: parent
onUrlChanged: {
if(url == "https://accounts.google.com/signin/v2/identifier?flowName=GlifWebSignIn&flowEntry=ServiceLogin"){
view.runJavaScript(internals.script_username)
}
else if(url == "https://accounts.google.com/signin/v2/sl/pwd?flowName=GlifWebSignIn&flowEntry=ServiceLogin&cid=1&navigationDirection=forward"){
view.runJavaScript(internals.script_password)
}
}
Component.onCompleted: view.url = "https://accounts.google.com/signin"
}
}
关于javascript - Qt5 和 QML : How to automatically input username and password using WebEngine Quick Nano Browser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58892666/
当我打开一个 Xcode 项目时,快速帮助功能工作得很好,但是当打开一个不在打开的项目中的文件(例如 abc.swift )时,文档不会出现。 下面是一个例子: 最佳答案 安装版本Command Li
我扩展了org.eclipse.ui.editors.text.TextEditor来实现自定义编辑器。对于此编辑器,我定义了一个标记类型(org.eclipse.core.resources.mar
我将 Xcode 7 beta 5(这是当前安装的唯一 xcode)与 Swift 2 一起使用,当我尝试使用 Quick 运行单元测试时,出现以下错误: error: module file was
我有一个 Excel 文档,从另一个 xls 中提取项目作为列表项来填充下拉菜单。问题是,有很多选择。我找不到快速到达我想要的区域的方法。 (例如,打开下拉列表并按“b”不会像大多数普通下拉列表那样转
如果出现给定情况,我有一组测试会使整个测试套件崩溃。而且,那种情况对于套件来说已经是失败了。 与其崩溃,我宁愿在系列设置期间测试条件是否为真,并在失败时快速中止它。 这可能吗? 最佳答案 是的,您可以
Currentyl 我正在开发一个 Java Web 应用程序,一些简单的 JSF + Spring + Hibernate 教科书应用程序架构,但我发现每次我必须这样做时,我都会在将 WAR 上传到
当我使用 --quick option 运行 mysql 时正如另一个网络帖子中所建议的描述 返回很多 -- 而当我在没有 --quick 的情况下运行 mysql 时选项 desc table返回正
是解决Quick sort中最差时间复杂度的中位数3吗? 还有, 使用 3 的中位数方法时是否存在最坏情况的时间复杂度? 最佳答案 我认为一直以中位数为基准的快速排序的最差时间复杂度是 O(nlogn
我想创建一个自定义对话框,例如联系人应用程序中的“快速联系”或官方 Twitter 应用程序中的对话框。当我点击一个按钮时,它会在按钮上方或下方打开。 http://londatiga.net/ima
开始为 Linux 平台编写 C 代码,我正在使用 man 工具来获取有关标准库函数的信息。现在我想知道有什么解决方案可以轻松获取有关这些函数使用的结构的信息。 此处的示例是 man sched_se
1.视图模型介绍 在qml中、常见的view视图有: listview: 列表视图,视图中数据来自listmodel、xmllistmodel或c++中继承自qabstractitemmo
目录 1.Popup介绍 2.自定义Popup 1.Popup介绍 Popup是一个弹出窗口的控件 它的常用属性如下所示: ancho
PathView ,顾名思义,沿着特定的路径显示 Model 内的数据。 Model 能够是 QML 内建的 ListModel 、 XmlListModel ,也能够是在 C++ 中实现的 QAb
[对于那些不在家的人,这是 Rolling My Own Version Control 的续集;)] 所以我放弃并安装了 TortoiseSVN(为了和 friend 一起做一个项目,我的个人版本控
我试图在Qt Quick应用程序中打开一个链接,收到functions are not supported in Qt Quick ui form警告,该应用程序正常工作,我想摆脱该警告,如何解决此警
我对 Qt 和 Qt Quick 非常陌生。我正在验证 Qt Quick 的 Qt Test 单元测试框架,但我无法理解如何运行测试。这就是我所拥有的,我创建了一个具有以下结构的 SUBDIRS 项目
我有执行简单选择的存储过程。任何时候我手动运行它,它都会在秒下运行。但是在生产中(SQL Azure S2 数据库),它每 12 个我们的计划任务内运行一次 - 所以我认为期望它每次都以“冷”运行是合
我正在使用quick-Json在我的程序中序列化 HashMap(String, String[]) ,但我在反序列化该对象时遇到问题。我使用此代码来序列化 map JsonGenerator
是的,我知道这个问题在技术上将是“开放式的”,并且可能会“引起辩论”,但请记住,我并不是在这里询问方向,我只是想确保我在右场。所以,话虽这么说,这是我的问题: 我想创建一个程序,允许用户输入并存储 1
我想拦截Qt Quick事件,比如key events ,这样我就可以在它们到达当前目标之前处理它们,例如当前的 focused item ,可选择阻止事件在默认事件链中传播。可以通过QML代码处理事
我是一名优秀的程序员,十分优秀!