Возможно, вы используете неправильное имя элемента.Проверьте значение, возвращаемое document.getElementsByName
:
webEngineView.runJavaScript("document.getElementsByName('element-name')", function(element){
console.log(element);
});
Я советую вам использовать идентификатор элемента вместо имени.(и document.getElementById()
соответственно).Вы можете найти идентификатор элемента с помощью инструментов разработчика (F12 в Chrome).
Правильный элемент - id_userLoginId
, но он все еще не работает.Я думаю, что проблема в странице Netflix.Может быть, некоторые стили или что-то еще ... Интересно, что код прекрасно работает в консоли Chrome.Вот код, который отлично работает с Google:
import QtQuick 2.11
import QtQuick.Controls 2.4
import QtWebEngine 1.7
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("WebEngine Test")
WebEngineView {
id: webEngineView
focus: true
anchors.fill: parent
url: "https://www.google.com"
onLoadingChanged: {
if(loadRequest.status === WebEngineLoadRequest.LoadSucceededStatus)
{
webEngineView.runJavaScript("searchbox = document.getElementById(\"lst-ib\"); searchbox.value=\"Who Framed Roger Rabbit\";");
}
}
}
}
Другой способ запустить собственный скрипт:
WebEngineView {
id: webEngineView
focus: true
anchors.fill: parent
url: "https://www.google.com"
userScripts: WebEngineScript {
injectionPoint: WebEngineScript.DocumentReady
sourceCode: "box = document.getElementById('lst-ib'); box.value = 'xxx';"
}
}
К сожалению, это также не работает с Netflix.