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

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

Похожие вопросы