Я пытаюсь написать скрипт Greasemonkey, который автоматически заполняет веб-страницу входа ESXi учетными данными. Следующий код заполняет поля ввода и включает кнопку отправки:
// ==UserScript==
// @name ESXi autofill credentials
// @namespace https://esx_address/ui/*
// @version 0.1
// @description Autofills user and password inputs
// @author Mirek
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @match https://esx_address/ui/*
// @grant none
// ==/UserScript==
try {
waitForKeyElements ("#password", function(jNode) {jNode.val("password");});
waitForKeyElements ("#username", function(jNode) {jNode.val("user");});
waitForKeyElements ("#submit", function(jNode) {jNode.prop("disabled", false);});
} catch(err) {
console.log("Something went wrong: " + err.message);
}
К сожалению, после нажатия кнопки отправки я вижу Cannot complete login due to an incorrect user name or password.
, хотя учетные данные верны.
Проблема, вероятно, связана с включенной кнопкой отправки. Страница входа включает его, когда пользователь вводит что-то в поле имени пользователя. К сожалению, скрипт не запускает такое поведение. Я обнаружил, что при включенном скрипте, когда я перехожу на страницу входа и повторно набираю последние буквы полей имени пользователя и пароля, вход проходит успешно.
Как я могу заполнить поля ввода таким образом, чтобы кнопка отправки активировалась?