Я дам вам функцию кликер с одного из своих расширений, используйте его:
Асинхронная функция кликерfunction clickElements(selector, regexp, where) {
return new Promise(function(returnResult) {
var search_result = false;
var local_reactive_function = function() {
var click_elements = searchElements(selector, regexp, where);
if (click_elements.length > 0) {
if (search_result === false) {
search_result = true;
await wait(100);
var click_elements = searchElements(selector, regexp, where);
if (click_elements.length > 0) {
observer.disconnect();
for (var n = 0; n < click_elements.length; n++) {
click_elements[n].click();
}
returnResult(click_elements.length);
}
else {
search_result = false;
local_reactive_function();
}
}
}
}
var observer = new MutationObserver(local_reactive_function);
observer.observe(document.body, {
characterData: true,
attributes: true,
childList: true,
subtree: true
});
local_reactive_function();
});
}
function searchElements(selector, regexp, where) {
var search_elements = [];
if (typeof where !== 'undefined') {
var all_elements = where.querySelectorAll(selector);
}
else {
var all_elements = document.querySelectorAll(selector);
}
for (var n = 0; n < all_elements.length; n++) {
if (typeof regexp == 'object') {
if (typeof regexp.test == 'function') {
if (regexp.test(all_elements[n].innerText.trim())) {
search_elements.push(all_elements[n]);
}
}
}
else {
search_elements.push(all_elements[n]);
}
}
return search_elements;
}
function wait(ms) {
return new Promise(function(success) {
setTimeout(function() {
success(true);
}, ms);
});
}
Чтобы кликнуть элемент с заранее известным классом просто вызывайте
clickElements:
(async function() {
await clickElements('CSS-селектор');
})();
Функция
clickElements обязательно дождется появления кнопок соответствующих указанному CSS-селектору, подождет 100 мс. после появления кнопок, после чего все их нажмёт. Обратите внимание, что если кнопок соответствующих селектору будет несколько, будут нажаты они все, поэтому тщательно подбирайте селектор.
P. S. Если вам нужно после появления кнопки кликать его безостановочно, просто используйте цикл:
(async function() {
while(true) {
await clickElements('CSS-селектор');
console.log('Успешно выполнен клик');
}
})();
После появления кнопки клики на него начнут сыпаться с частой один клик каждые 100 мс. пока кнопка не исчезнет.