Qt实现Linux下模拟点击界面,QT 模拟点击网页

概要

QT 客户端与网页交互的过程中,总是有很多值得我们学习的地方。 而QT模拟点击网页,也是很重要的内容之一, 这里所说的QT模拟点击网页就是获取到网页上的对应的标签,然后再进行我们想要的点击操作。如点击标签,或者提交登陆。

QWebView 的对象生成。

m_browser = new QWebView();

setCentralWidget(m_browser); //为中心位置

QWebPage* page = m_browser->page();

page->setForwardUnsupportedContent(true);

//下面是设置对应网页上的一些可操作属性

QWebSettings* settings = page->settings();

settings->setAttribute(QWebSettings::AutoLoadImages, false); //不让自动下载图片。

settings->setAttribute(QWebSettings::JavascriptEnabled, true); //允许使用js

settings->setAttribute(QWebSettings::PluginsEnabled, true); //可以拖拽网页

获取网页标签

QWebFrame* frame = m_browser->page()->mainFrame();

QWebElement element = frame->documentElement().findFirst(QLatin1String("div[class=search_btn_wrap]")).firstChild()

我们可以通过QWebView 对象的page() 里获得mainFram() , 而element 的查找就可以通过fram里面的所有element 找到需要的element,这里可以通过id, 也可以通过className,

findFirst(QLatin1String(“div[class=search_btn_wrap]”))

这里是找到网页中class name为 search_btn_wrap 的第一次出现的div标签。 firstChild() 这里是找到该div标签后,再找到它的第一个子标签。

其它的查找方式也类似这样。

给输入框赋值

setAttribute进行赋值

QWebFrame* frame = m_browser->page()->mainFrame();

QWebElement element = frame->documentElement().findFirst(QLatin1String("input[class=pwd]"));

element.setAttribute(QLatin1String("value"), m_password);

这里先通过QT的接口获取到对应的element, 再通过QWebElement 的setAttribute 方法设置输入框内需要的值。

直接赋值

QWebFrame* frame = m_browser->page()->mainFrame();

frame->evaluateJavaScript(tr(“document.getElementById(\”passkey\”).value=\”%1\”“).arg(m_password));

这里是通过使用js脚本,先通过标签id找到对应的标签,再进行赋值造作。

通过JS 模拟一次点击事件。

void emulateMouseClick(QWebElement& element)

{

const QString script = QLatin1String(

"var evObj = document.createEvent('MouseEvents');"

"evObj.initEvent('click', true, true);"

"this.dispatchEvent(evObj);");

element.evaluateJavaScript(script);

}

这里是自己先编写需要用上的js脚本,这里的功能是模拟鼠标点击一次, 再通过QWebElement 的evaluateJavaScript 方法来执行JS脚本操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值