[英]How can I fill in text (from C++) in an input text field on a web page through QWebEngine?
我想在QWebEngine
包裝一個網站,以便我可以使用Qt的事件過濾器甚至更多來修改輸入命令。 有問題的網站需要用戶名/電子郵件和密碼,我想確保自己可以處理該文本的輸入,發送要在網頁上填寫的字符串,然后以編程方式按下登錄按鈕。同一頁。
我找到了此頁面 ,建議使用QWebChannel
和一些自定義javascript來使其正常工作。 我知道如何通過Firefox的Web檢查器工具獲取要填寫的元素的信息,但是我不知道如何
將兩個字符串傳遞給我QWebChannel
某種方式通過QWebChannel
運行的自定義JS代碼
實際編寫JS代碼以在不受我控制的網站上查找特定元素
沒有url參數或類似參數,如果我查看在瀏覽器中實際按下“登錄”時發送的POST請求的外觀,則信息會以某種方式編碼,因此不會復制實際發送的數據在這一點上似乎可行。
在我的登錄頁面中,我有兩個變量:用戶名,用戶密碼。 您可以使用runJavaScript形式QWebEnginePage來評估您的js:
ui->webView->page()->runJavaScript(QString("document.getElementById('username').value = '%1'").arg("example"));
ui->webView->page()->runJavaScript(QString("document.getElementById('password').value = '%1'").arg("example"));
要按用戶獲取插入的文本,可以使用:
ui->webView->page()->runJavaScript(QString("document.getElementById('username').value"),
[this](const QVariant& res) {
qDebug() << "Username = " << res.toString();
});
現在,只需調用您的登錄按鈕並模擬點擊事件,發布事件...。
ui->webView->page()->runJavaScript(QString("document.getElementById("%1").click()).arg("example"));
我使用它來自動登錄頁面以獲取會話令牌或cookie。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.