#javascript #jquery #greasemonkey-4
#javascript #jquery #greasemonkey-4
Вопрос:
Я создал пользовательский скрипт, который начинается со страницы входа в систему Neopets и автоматически заполняет имя пользователя и пароль. У меня возникли проблемы с тем, чтобы заставить скрипт нажать гигантскую зеленую кнопку «ВОЙТИ».
$('input[name=username']).val('username_here');
$('input[name=password']).val('password_here');
Я перепробовал все следующие действия, чтобы нажать кнопку входа или отправить форму.
//None of these clicked the sign in button:
$("input.submit[name = 'welcomeLoginButton']").submit();
$("input.submit[name = 'welcomeLoginButton']").click();
$('body').on('click','welcomeLoginButton',function(){alert('logged in?');});
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.submit[name = 'welcomeLoginButton']"))).click();
Я знаю, что нет элемента с именем ‘welcomeLoginButton’, а есть только класс с именем .welcomeLoginButton
. Как я могу заставить форму отправлять себя после заполнения имени пользователя и пароля?
Комментарии:
1. Что не так с
document.getElementsByClassName("welcomeLoginButton")[0].click()
? (.click()
это не просто jQuery) Редактировать: вы также можете просто использовать$('.welcomeLoginButton')[0].click()
2. @Samathingamajig Большое спасибо, оба они сработали! Не могли бы вы опубликовать это в качестве ответа?
Ответ №1:
Просто получите список всех элементов с классом welcomeLoginButton
и щелкните 0-й индекс.
Версия jQuery:
$('.welcomeLoginButton')[0].click();
Ванильные версии JS:
document.getElementsByClassName("welcomeLoginButton")[0].click();
// querySelector without the All just returns the first index of the array
document.querySelector('.welcomeLoginButton').click();
document.querySelectorAll('.welcomeLoginButton')[0].click();