#include "mainwindow.h"
#include "ui_mainwindow.h"
//使用utf编码,避免乱码
#pragma execution_character_set("utf-8")
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
started = false;
ui->setupUi(this);
this->setWindowTitle("天猫-茅台");
this->resize(1000,600);
timer = new QTimer(this);
timer->setInterval(100);
connect(timer,&QTimer::timeout,this,&MainWindow::replyTimeout);
browser = new HLBrowser(this);
connect(browser->webView,&WebView::loadProgress,this,&MainWindow::replyLoadProgress);
connect(browser->webView,&WebView::loadFinished,this,&MainWindow::replyLoadFinished);
QFont ft;
ft.setPointSize(12);
startButton = new QPushButton("开 始",this);
connect(startButton,&QPushButton::pressed,this,&MainWindow::replyButtonPressed);
startButton->setFont(ft);
startButton->setStyleSheet("QPushButton{border:1px groove rgb(10,150,250);"
"border-radius:4px;background-color:rgb(10,150,255);"
"color:white;}"
"QPushButton:hover{background-color:rgb(0,100,200);}"
);
connect(this,&MainWindow::webValueSignal,this,&MainWindow::replyWebValue);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::replyLoadProgress(int progress)
{
//QString _urlStr = browser->webView->url().toString();
//qDebug()<<"导入网页进度:"<<_urlStr<<"----"<<progress;
return;
}
void MainWindow::replyLoadFinished()
{
//用户还没点击开始
if (!started)
return;
QString _urlStr = browser->webView->url().toString();
qDebug()<<"当前网站导入完成:"<<_urlStr;
/******************当前页面是购物车*******************
* 执行以下操作:
* 1.如果全选没有选择,那么点击购物车页面的全选按钮;
* 2.勾选后点击结算,等待结算按钮变成可用,这里用setInterval实现;
*************************************************/
if (_urlStr.contains("cart.htm")){
QString jscode = "var check_div = document.getElementById('J_SelectAll1');"
"if(!check_div.classList.contains('selected')){"
"var check_elements = document.querySelectorAll('#J_SelectAll1 label');"
"if(check_elements && check_elements.length > 0)check_elements[0].click();"
"}"
"var timer = setInterval(()=>{"
"var submit_element = document.getElementById('J_SmallSubmit');"
"if(!submit_element.classList.contains('submit-btn-disabled')){"
"submit_element.click();"
"clearInterval(timer);"
"}"
"}"
",10);";
//browser->webView->page()->runJavaScript(jscode,[this](const QVariant& v){emit(webValueSignal(v.toString()));});
browser->webView->page()->runJavaScript(jscode);
}
/******************当前页面是确认订单页面*******************
* 执行以下操作:
* 1.如果有提交订单按钮,则点击;
* 2.如果没有,则返回上一页();
*************************************************/
if (_urlStr.contains("order/confirm_order.htm")){
QString jscode = "var ret = 000;var submit_elements = document.querySelectorAll('#submitOrderPC_1 .go-btn');"
"if(submit_elements && submit_elements.length > 0){"
"submit_elements[0].click();ret = 111;"
"}"
"else{window.history.back();ret=000;ret;}"
;
browser->webView->page()->runJavaScript(jscode,[this](const QVariant& v){qDebug()<<"返回数据:"<<v.toInt();/*emit(webValueSignal(v.toString()));*/});
//browser->webView->page()->runJavaScript(jscode);
qDebug()<<"进入订单确认按钮,自动按下提交订单.......";
}
/**************当前页面是确定提交订单后的页面*******************
* 出现这个页面表示已经提交成功,后面会进入付款页面(需要新建)
* 执行以下操作:
* 1.给开始按钮发送按下信号;
*************************************************/
//if (_urlStr.contains("auction/confirm_order.htm")){
if (_urlStr.contains("business/cashiermain.htm")){
emit(startButton->pressed());
qDebug()<<"已经进入付款页面";
}
}
void MainWindow::replyTimeout()
{
}
void MainWindow::replyWebValue(QString str)
{
qDebug()<<"web string:"<<str;
}
void MainWindow::replyButtonPressed()
{
QString _urlStr = browser->webView->url().toString();
started = !started;
if (!started)
{
//timer->stop();
startButton->setText("开 始");
//结束
return;
}
else
{
//timer->start();
startButton->setText("停 止");
}
/******************当前页面是购物车*******************
* 执行以下操作:
* 1.如果全选没有选择,那么点击购物车页面的全选按钮;
* 2.勾选后点击结算,等待结算按钮变成可用,这里用setInterval实现;
*************************************************/
if (_urlStr.contains("cart.htm")){
QString jscode = "var check_div = document.getElementById('J_SelectAll1');"
"if(!check_div.classList.contains('selected')){"
"var check_elements = document.querySelectorAll('#J_SelectAll1 label');"
"if(check_elements && check_elements.length > 0)check_elements[0].click();"
"}"
"var timer = setInterval(()=>{"
"var submit_element = document.getElementById('J_SmallSubmit');"
"if(!submit_element.classList.contains('submit-btn-disabled')){"
"clearInterval(timer);"
"submit_element.click();"
"}"
"}"
",50);";
browser->webView->page()->runJavaScript(jscode,[this](const QVariant& v){emit(webValueSignal(v.toString()));});
}
if (_urlStr.contains("confirm_order.htm")){
qDebug()<<"当前页面是确认订单222";
}
/*
//点击购物车
QString jscode = "var chart_elements = document.querySelectorAll('#sn-bd .sn-quick-menu .sn-cart .sn-cart-link');"
"if(chart_elements && chart_elements.length > 0)chart_elements[0].click();"
"var time = new Date().getTime();time;";
browser->webView->page()->runJavaScript(jscode,[this](const QVariant& v)
{
qDebug() << v.toString()<<"kkk";
emit(webValueSignal(v.toString()));
}
利用QWebEngine实现的某宝自动抢购mao台程序
需积分: 1 43 浏览量
2023-08-03
23:35:10
上传
评论
收藏 7KB RAR 举报
视图猿人
- 粉丝: 53
- 资源: 50
最新资源
- XILINXFPGA源码Xilinxspratan3xcs100E(VGAPS2)
- XILINXFPGA源码XilinxSPARTAN-3E入门开发板实例
- XILINXFPGA源码XilinxSdramVerilog和VHDL版本文档
- 物联网智能家居方案-基于Nucleo-STM32L073&机智云(大赛作品,文档齐全,可直接运行)(文档加Matlab源码)
- XILINXFPGA源码XilinxISE9.xFPGACPLD设计源码
- 成都市地图含高新区(高新南区,高新西区),天府新区,东部新区虚拟行政区划
- XILINXFPGA源码XilinxEDK设计试验
- XILINXFPGA源码XilinxEDKMicroBlaze内置USB固件程序
- 基于 django 的视频点播后台管理系统源代码+数据库
- 基于Java的网上医院预约挂号系统的设计与实现(部署视频)-kaic.mp4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈