本文整理汇总了C++中QWebElement::evaluateJavaScript方法的典型用法代码示例。如果您正苦于以下问题:C++ QWebElement::evaluateJavaScript方法的具体用法?C++ QWebElement::evaluateJavaScript怎么用?C++ QWebElement::evaluateJavaScript使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QWebElement
的用法示例。
在下文中一共展示了QWebElement::evaluateJavaScript方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SLOT
int PhpWebView::click2(QWebElement elem, bool samewnd)
{
if (elem.isNull())
return 0;
if (samewnd)
elem.removeAttribute("target");
QEventLoop loop;
isNewViewCreated = false;
isNewViewBegin = false;
QString js = "var e = document.createEvent('MouseEvents');";
//js += "e.initEvent( 'click', true, true );";
js += "e.initMouseEvent( 'click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);";
js += "this.dispatchEvent(e);";
elem.evaluateJavaScript(js);
QTimer::singleShot(1000, &loop, SLOT(quit()));
loop.exec();
while (browser && isNewViewBegin && !isNewViewCreated)
loop.processEvents();
return 1;
}
示例2: submit
void FormExtractor::submit()
{
QWebFrame *frame = ui.webView->page()->mainFrame();
QWebElement firstName = frame->findFirstElement("#firstname");
QWebElement lastName = frame->findFirstElement("#lastname");
QWebElement maleGender = frame->findFirstElement("#genderMale");
QWebElement femaleGender = frame->findFirstElement("#genderFemale");
QWebElement updates = frame->findFirstElement("#updates");
ui.firstNameEdit->setText(firstName.evaluateJavaScript("this.value").toString());
ui.lastNameEdit->setText(lastName.evaluateJavaScript("this.value").toString());
if (maleGender.evaluateJavaScript("this.checked").toBool())
ui.genderEdit->setText(maleGender.evaluateJavaScript("this.value").toString());
else if (femaleGender.evaluateJavaScript("this.checked").toBool())
ui.genderEdit->setText(femaleGender.evaluateJavaScript("this.value").toString());
if (updates.evaluateJavaScript("this.checked").toBool())
ui.updatesEdit->setText("Yes");
else
ui.updatesEdit->setText("No");
// In mobile devices, change the tab when the data has been submitted
#if defined Q_OS_SYMBIAN || defined Q_WS_HILDON || defined Q_WS_MAEMO_5 || defined Q_WS_SIMULATOR
ui.tabWidget->setCurrentWidget(ui.tabData);
#endif
}
示例3: foreach
foreach (QWebElement selectField, selectFields) {
QString name = selectField.attribute(QLatin1String("name"));
int selectedIndex = selectField.evaluateJavaScript(QLatin1String("this.selectedIndex")).toInt();
if (selectedIndex == -1)
continue;
QWebElementCollection options = selectField.findAll(QLatin1String("option"));
QString value = options.at(selectedIndex).toPlainText();
searchUrl.addQueryItem(name, value);
}
示例4: loadFinished
void Browser::loadFinished(bool ok) {
QUrl current_url(page->currentFrame()->baseUrl());
// events trottling
if (current_url == this->last_url)
{
qDebug() << this << QString("%1, loadFinished trottled.").arg(QDateTime::currentDateTime().toTime_t());
return;
}
this->last_url = current_url;
qDebug() << this << QString("%1, '%2', %3 ms.").arg(QDateTime::currentDateTime().toTime_t()).arg(current_url.toString()).arg(page_load_time.elapsed());
if (!ok) {
emit(errorHappened(page_load_time.elapsed(), page->currentFrame()->baseUrl()));
restartTest(QString("its not ok, something wrong happened! (possibly 500) URL: %1").arg(page->currentFrame()->baseUrl().toString()));
return;
}
QWebElement document= page->currentFrame()->documentElement();
if (page->currentFrame()->baseUrl().host() != base_url.host())
{
restartTest("We've got outside the test site. Restarting.");
return;
}
QWebElementCollection collection = document.findAll("a[href]");
QWebElement link; QString link_href;
if (collection.count() == 0)
{
restartTest("No links found on page. Restarting.");
return;
}
// Ignoring javascript and empty links
do
{
link = collection.at(qrand()%collection.count());
link_href = link.attribute("href");
}
while ((link_href.count() == 0) || (link_href.at(0) == '#') || (link_href.contains("javascript:;")));
emit(pageLoaded(page_load_time.elapsed(), page->currentFrame()->baseUrl()));
link.evaluateJavaScript("var evObj = document.createEvent('MouseEvents');evObj.initEvent( 'click', true, true );this.dispatchEvent(evObj);");
page_load_time.start();
timeout_countdown->start();
}
示例5:
QList<QWebElement> PhpWebView::getAllElementsByXPath2(const QString & xpath, QWebElement node)
{
QString js = "var result = document.evaluate('"+xpath+"', this, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); ";
js += "WebElementBridge.clear(); ";
js += "var node = result.iterateNext(); ";
js += "while (node) { ";
js += " WebElementBridge.passElement(node); ";
js += " node = result.iterateNext(); ";
js += "} ";
node.evaluateJavaScript(js);
QList<QWebElement> coll = webridge.list;
return coll;
}
示例6: isEditableElement
static bool isEditableElement(QWebPage* page)
{
const QWebFrame* frame = (page ? page->currentFrame() : 0);
QWebElement element = (frame ? frame->findFirstElement(QL1S(":focus")) : QWebElement());
if (!element.isNull()) {
const QString tagName(element.tagName());
if (tagName.compare(QL1S("textarea"), Qt::CaseInsensitive) == 0) {
return true;
}
const QString type(element.attribute(QL1S("type")).toLower());
if (tagName.compare(QL1S("input"), Qt::CaseInsensitive) == 0
&& (type.isEmpty() || type == QL1S("text") || type == QL1S("password"))) {
return true;
}
if (element.evaluateJavaScript("this.isContentEditable").toBool()) {
return true;
}
}
return false;
}
示例7: GetWordAt
bool qPBReaderDocView::GetWordAt(QPoint iScreenPt,
QString & osSelectedWord,
QRect & oScreenRect)
{
TRSCOPE(view, "qPBReaderDocView::GetWordAt");
osSelectedWord.clear();
oScreenRect = QRect();
QWebHitTestResult hit = _pDoc->mainFrame()->hitTestContent(iScreenPt);
QWebElement e = hit.enclosingBlockElement();
TRACE << ENC(e.localName()) << endl;
QString js = "qPBReaderFindClickedWord(this, " + QString::number(
iScreenPt.x()) + "," + QString::number(iScreenPt.y()) + ")";
TRACE << ENC(js) << endl;
QList<QVariant> lv = e.evaluateJavaScript(js).toList();
bool b = lv.size() == 5;
TRACE << "Javascript word search = " << b << endl;
if (b)
{
osSelectedWord = lv[0].toString();
oScreenRect = QRect(QPoint(lv[1].toInt(), lv[2].toInt()), QPoint(lv[3].toInt(),
lv[4].toInt()));
TRACE << ENC(osSelectedWord)
<< " rect (" << oScreenRect.left() << ", "
<< oScreenRect.top() << ", "
<< oScreenRect.right() << ", "
<< oScreenRect.bottom() << ")" << endl;
}
TRACE << TRANAME << " ended with " << b << endl;
return b;
}
示例8: setFormInputFile
void Phantom::setFormInputFile(QWebElement el, const QString &fileTag)
{
m_page.m_nextFileTag = fileTag;
el.evaluateJavaScript(JS_MOUSEEVENT_CLICK_WEBELEMENT);
}
示例9: click
int PhpWebView::click(const QString & xpath, bool samewnd)
{
QWebElement elem = getElementByXPath(QString(xpath));
if (elem.isNull())
return 0;
elem.setFocus();
if (samewnd)
elem.removeAttribute("target");
QString js = "var node = this; var x = node.offsetLeft; var y = node.offsetTop; ";
js += "var w = node.offsetWidth/2; ";
js += "var h = node.offsetHeight/2; ";
js += "while (node.offsetParent != null) { ";
js += " node = node.offsetParent; ";
js += " x += node.offsetLeft; ";
js += " y += node.offsetTop; ";
js += "} ";
js += "[x+w, y+h]; ";
QList<QVariant> vlist = elem.evaluateJavaScript(js).toList();
QPoint point;
point.setX(vlist.at(0).toInt());
point.setY(vlist.at(1).toInt());
QRect elGeom = elem.geometry();
QPoint elPoint = elGeom.center();
int elX = point.x(); //elPoint.x();
int elY = point.y(); //elPoint.y();
int webWidth = width();
int webHeight = height();
int pixelsToScrollRight=0;
int pixelsToScrollDown=0;
if (elX > webWidth)
pixelsToScrollRight = elX-webWidth+elGeom.width()/2+50; //the +10 part if for the page to scroll a bit further
if (elY > webHeight)
pixelsToScrollDown = elY-webHeight+elGeom.height()/2+50; //the +10 part if for the page to scroll a bit further
/*pixelsToScrollRight = elX-elGeom.width()/2-50;
pixelsToScrollDown = elY-elGeom.height()/2-50;
if (pixelsToScrollRight < 0)
pixelsToScrollRight = 0;
if (pixelsToScrollRight > page()->mainFrame()->scrollBarMaximum(Qt::Horizontal))
pixelsToScrollRight = page()->mainFrame()->scrollBarMaximum(Qt::Horizontal);
if (pixelsToScrollDown < 0)
pixelsToScrollDown = 0;
if (pixelsToScrollDown > page()->mainFrame()->scrollBarMaximum(Qt::Vertical))
pixelsToScrollDown = page()->mainFrame()->scrollBarMaximum(Qt::Vertical);*/
int oldHoriz = page()->mainFrame()->scrollBarValue(Qt::Horizontal);
int oldVert = page()->mainFrame()->scrollBarValue(Qt::Vertical);
page()->mainFrame()->setScrollBarValue(Qt::Horizontal, pixelsToScrollRight);
page()->mainFrame()->setScrollBarValue(Qt::Vertical, pixelsToScrollDown);
QPoint pointToClick(elX-pixelsToScrollRight, elY-pixelsToScrollDown);
QEventLoop loop;
isNewViewCreated = false;
isNewViewBegin = false;
//QMouseEvent *pressEvent = new QMouseEvent(QMouseEvent::MouseButtonPress, pointToClick, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
//QApplication::postEvent(browser, pressEvent);
//QApplication::processEvents();
//QMouseEvent releaseEvent(QMouseEvent::MouseButtonRelease,pointToClick,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);
//QApplication::sendEvent(browser, &releaseEvent);
QString js2 = "var e = document.createEvent('MouseEvents');";
//js2 += "e.initEvent( 'click', true, true );";
//js2 += "e.initMouseEvent('click', true, true, window, 0, 0, 0, "+QString::number(elX)+", "+QString::number(elY)+", false, false, false, false, 0, null);";
js2 += "e.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);";
js2 += "this.dispatchEvent(e);";
elem.evaluateJavaScript(js2);
QTimer::singleShot(1000, &loop, SLOT(quit()));
loop.exec();
while (browser && isNewViewBegin && !isNewViewCreated)
loop.processEvents();
//page()->mainFrame()->setScrollBarValue(Qt::Horizontal, oldHoriz);
//page()->mainFrame()->setScrollBarValue(Qt::Vertical, oldVert);
return 1;
}