Seite 1 von 1
Formulare automatisch mit QWebView ausfüllen
Verfasst: 3. September 2011 17:44
von Tiim
Hallo Community
Ich möchte mit einem
QWebView ein kleines Programm schreiben, welches von alleine (ohne User input) gewisse Webseiten besuchen sollte, und dort ein Formular (zB zum einloggen) ausfüllen und Abschicken kann.
Und genau da scheitert es. Wie kann man mit einem QWebView Formulare ausfüllen, und am besten das ganze Widget sozusagen "readonly" setzen
/Edit
Ich habe gerade bemerkt, dass QWebView keine Funktion wie zB getHtml(); hat, wie kann ich denn an Informationen auf der Website drankommen?
Re: Formulare automatisch mit QWebView ausfüllen
Verfasst: 3. September 2011 21:19
von brax
Um ehrlich zu sein, hört sich das Programm etwas fragwürdig an... man könnte meinen, Du möchtest "böse" Sachen machen (Spambots oder ähnliches).
Du kannst Dir vom QWebFrame die Elemente der Seite geben lassen und diese dann z.B. per Javascript manipulieren. Guck Dir mal
Code: Alles auswählen
QWebElementCollection QWebFrame::findAllElements ( const QString & selectorQuery ) const
QWebElement QWebFrame::findFirstElement ( const QString & selectorQuery ) const
QVariant QWebFrame::evaluateJavaScript ( const QString & scriptSource )
an. Damit solltest Du das ganze realisieren können.
Re: Formulare automatisch mit QWebView ausfüllen
Verfasst: 3. September 2011 22:09
von Tiim
(Spambots oder ähnliches)
Nein, ich habe nicht vor solche bösen Sachen zu machen
Aber danke, ich werde mir das mal anschauen.
Re: Formulare automatisch mit QWebView ausfüllen
Verfasst: 3. September 2011 23:03
von Tiim
Damit:
Code: Alles auswählen
QWebElementCollection element = ui->webView->page()->mainFrame()->findAllElements("*");
for (int i=0;i<element.count();i++)
{
qDebug()<< i << " gefunden";
}
Findet er über 300 Elemente.
Wie kann ich das auf die 2 Editfelder und den Einlog Button beschränken? Und, wie kann ich diese dann benutzen (in die Felder eingeben, und auf den Button clicken)?
Ich habe leider keine Ahnung von css und habe mir das im Internet zusammengesucht.
Re: Formulare automatisch mit QWebView ausfüllen
Verfasst: 4. September 2011 10:22
von upsala
Und den Filter auf Eingabeelemente beschränken, oder mal die Doku von QWebElement anzusehen und dort eine passende Methode zum Filtern verwenden wäre keine Idee.
Außerdem scheinen HTML-Kenntnisse bei so einem Vorhaben von Vorteil zu sein.
Re: Formulare automatisch mit QWebView ausfüllen
Verfasst: 4. September 2011 13:58
von Tiim
Gut, ich habe es geschafft, die Eingabefelder auszufüllen.
Aber ich schaffe es einfach nicht, den Submit-Button zu betätigen:
Code: Alles auswählen
QWebElement button = ui->webView->page()->mainFrame()->findFirstElement("input[type=submit]");
button.evaluateJavaScript("click()");
Hier noch den wichtigen Teil des HTML Codes:
Code: Alles auswählen
<input type="submit" id="login_button" style="margin-bottom:10px; width:126px; float: right" value="Login"/>
</div>
<div id="js_login_button" style="display:none">
<a href="#" onclick="$('#login_button').trigger('click'); return false;" class="login_button">
<span class="button_left"></span>
<span class="button_middle">Login</span>
<span class="button_right"></span>
</a>
</div>
/Edit:
Mit
geht es.
