@MrTomMus

JavaScript что не так с селекторами?

// ==UserScript==
// @name         Bot for yandex
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://yandex.ru/*
// @grant        none
// ==/UserScript==




let keywords = ['гитара', 'бас-гитара', 'барабан'];
let keyword = 'sdasd' //keywords[getRandom(0, keywords.length)];
const button = document.querySelector('.search2__button button')[0];

let nextButton = document.getElementsByClassName('pager__item_kind_next')[0];
let numberPage = document.getElementsByClassName('pager__item_current_yes')[0];


if(button != undefined){
    let i = 0;
    let timeId = setInterval(() => {
        document.getElementsByClassName('input__control input__input mini-suggest__input')[0].value += keyword[i];
        i++
        if(i==keyword.length){
            console.log(button + 'Клик 1')
            button.click();
            clearInterval(timeId);
        }
    }, 1000);
}else{
    let links = document.links
    let nextYandexPage = true;
    for(let i = 0; i<links.length; i++){
        if(links[i].href.indexOf('ru.wikipedia.org') != -1){
            console.log('Ссылка найдена ' + links[i])
            let link = links[i];
            nextYandexPage = false;
            links[i].removeAttribute('target');
            setTimeout(()=>{link.click();}, getRandom(1000, 4000));
            break;
}
    }
    if(numberPage == '5'){
        nextYandexPage = false;
        location.href = 'https://yandex.ru/';
    }
    if(nextYandexPage){
        setTimeout(() => {nextButton.click();}, getRandom(1000, 4000));
    }
}

function getRandom(min, max){
   return Math.floor(Math.random()*(max-min)+min)
}


Подскажите, пишу бота. Нужно обратится к кнопке, id у кнопки нет. Ищу с помощью class. Кнопка работает через раз. При наведение на кнопку и клике так же появляются новые классы. Их тоже пробовал. В консоле пробовал ее найти, тоже через раз находит. Ну и соответственно не работает метод клик.
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 2
@artuh_a
Зачем вы ищите
document.querySelector('.search2__button button')[0]
? этот метод итак возвращает первый найденный элемент, возможно вы путаете с querySelectorAll?
Ответ написан
Stalker_RED
@Stalker_RED
Возможно происходит "гонка", и ваш скрипт иногда загружается до кнопки, и естественно не находит её.
Можно повесить обработчик повыше, хоть прямо на Windows. Читайте "делегирование события js"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы