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脚本操作。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小K小Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值