Как войти в neopets.com через GM userscript

#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();