假点击QNetworkAccessManager登录页面上的按钮
Fake click on a Button at a login Page with QNetworkAccessManager
我想使用QNetworkAccessManager登录页面并保存比cookie,以从您必须登录的页面获取源代码。使用我的代码,我无法填充页面上的输入,但我无法按顺序操作按钮。谁能帮我?
在 .pro 文件中:QT += 网络
这是我的代码:
文件.h:
#include <QNetworkAccessManager>
#include <QUrl>
#include <QByteArray>
#include <QString>
#include <QEventLoop>
#include <QNetworkCookieJar>
#include <QNetworkProxy>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrlQuery>
#include <iostream>
#include <QObject>
#include <QCoreApplication>
class object : public QObject
{
Q_OBJECT
public:
QUrlQuery postData;
QNetworkAccessManager *networkManager;
QUrl serviceUrl;
QNetworkCookieJar *cookies;
QNetworkRequest request;
object(QObject *parent = 0);
~object();
void load();
public slots:
void finished(QNetworkReply* a);
};
文件.cpp:
#include "networkaccessmanager.h"
object::object(QObject *parent)
: QObject(parent)
{
networkManager = new QNetworkAccessManager();
serviceUrl = QUrl("https://*/user/login?redirect_to=");
cookies = networkManager->cookieJar();
connect(networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(finished(QNetworkReply*)) );
}
object::~object()
{
}
void object::load()
{
postData.addQueryItem("user_name", "use");
postData.addQueryItem("password", "pw");
request.setUrl(serviceUrl);
request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
networkManager->post(request, postData.toString(QUrl::FullyEncoded).toUtf8());
}
void object::finished(QNetworkReply *a)
{
std::cout << a->readAll().toStdString() << std::endl;
QCoreApplication::exit();
}
主.cpp:
#include <QCoreApplication>
#include <iostream>
#include "networkaccessmanager.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
object obj;
obj.load();
return a.exec();
}
我使用了qwebview,我实际上不想使用并使用了这个函数:
int WebView::clickButton(QString inputName /* input[type=submit] */ )
{
QWebElement button = this->page()->mainFrame()->documentElement().findFirst(inputName);
if (button.isNull()) {
std::cout << "33[2Kr" << " => Error: Button konnte nicht gefunden werden." << std::endl;
return 1;
}
button.evaluateJavaScript( "this.click()" );
return 0;
}
相关文章:
- 问:如何使用C++中的按钮从窗口打开窗口
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- QML按钮点击功能执行顺序
- 当用户超过按钮点击限制时报告
- 函数计算用户按下按钮的频率
- 热键/按钮,根据需要进行编译,但不运行(在F5和Ctrl+Shift+B之间)
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- Qt自定义QPush按钮未显示在布局上
- 密码登录程序将永远循环并显示不正确的结果
- SDL 操纵杆按钮按下/C++
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- Qt中来自不同功能的按钮引用
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- 如何检查cURL是否成功登录?c ++
- ImGui 在单击按钮后冻结
- 在主窗口之前显示登录对话框并隐藏主窗口按钮
- 假点击QNetworkAccessManager登录页面上的按钮
- 嗨,我正在尝试编码一个允许用户在Visual C 中登录的按钮,程序正在运行,但表单对话框未显示