Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   поочередный клик по элементам на странице (https://javascript.ru/forum/events/70413-poocherednyjj-klik-po-ehlementam-na-stranice.html)

денис77447327 03.09.2017 18:39

поочередный клик по элементам на странице
 
вобщем пишу скрипт для hh.ru нужно чтобы он на странице поиска вакансий нажимал кнопку откликнуться и в появившемся окне нажимал "отправить отклик" и так 20 раз. после этого нажимает на ссылку перехода на следующую страницу с новым списком вакансий. и если "сруливает куда" то то нажимал кнопку вернуться на предыдущую страницу.

var q = document.getElementsByClassName("bloko-button bloko-button_small HH-VacancyResponsePopup-Link")//кнопка откликнуться
var w = document.getElementsByClassName("bloko-button   bloko-button_secondary     HH-VacancyResponsePopup-Submit     HH-SubmitDisabler-Submit") \\ кнопка отправить отклик
var e = document.getElementsByClassName("b-pager__next-text m-active-arrow HH-Pager-Controls-Next HH-Pager-Control") \\ кнопка перехода на следующую страницу
q.length;
var url = window.location.href;
if (url.indexOf("hh.ru/search/vacancy?") == -1) setTimeout(function()
{
	history.back();
}, 2000);
var i
for (i = 0; i < 20; i++)
{
	
	setTimeout(function()
	{
		q[i].click()
	}, 2000);
		setTimeout(function()
	{
		w[0].click()
	}, 6000);}
	
	setTimeout(function()
	{
		e[0].click()
	}, 9000);

Rasy 03.09.2017 19:32

денис77447327,
Это очень сложная хакерская задача. Нужны месяцы для реализации... А может быть и годы!

j0hnik 03.09.2017 20:22

Что конкретно не получается? все решаемо.

денис77447327 03.09.2017 22:34

Вложений: 1
получается то что он кликает по последней 20й кнопке "откликнуться" и все.. дальше ошибки в консоли Uncaught TypeError: Cannot read property 'click' of undefined

j0hnik 03.09.2017 23:42

document.querySelector(".el").dispatchEvent(new Event("click"));

добавьте ко всем кнопкам

денис77447327 07.09.2017 00:20

Cannot read property 'dispatchEvent' of null пишет document.querySelector("bloko-button bloko-button_small HH-VacancyResponsePopup-Link").dispatchEvent(new Event("click")); отдельно эту комбинацию даже когда запускаю

Nexus 07.09.2017 08:06

денис77447327, вроде как метод «getElementsByClassName» принимает только 1 класс в кач-ве аргумента, а в случае с «querySelector» у вас селектор кривой задан.
Тут про оба метода написано: https://learn.javascript.ru/searchin...erySelectorAll

Код ниже найдет на странице первый попавшийся на странице элемент, который содержит 3 класса сразу ("bloko-button", "bloko-button_small" и "HH-VacancyResponsePopup-Link") и воспроизведен на нем событие клик:
document.querySelector(".bloko-button.bloko-button_small.HH-VacancyResponsePopup-Link").dispatchEvent(new Event("click"));

денис77447327 12.09.2017 11:54

тогда почему код ниже не работает? он кликает только первый элемент [1] после закрытия всплывающего окна на второй элемент [2] клик не происходит
// ==UserScript==
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://hh.ru/*
// @grant none
// ==/UserScript==


(function() {
"use strict";

var q = document.getElementsByClassName("bloko-button bloko-button_small HH-VacancyResponsePopup-Link");

var w = document.getElementsByClassName("bloko-button bloko-button_secondary HH-VacancyResponsePopup-Submit HH-SubmitDisabler-Submit");

var e = document.getElementsByClassName("b-pager__next-text m-active-arrow HH-Pager-Controls-Next HH-Pager-Control");


var url = window.location.href;

if (url.indexOf("hh.ru/search/vacancy?") == -1) setTimeout(function()

{

history.back();

}, 2000);


setTimeout(function() {
q[1].click(); }, 3000);
setTimeout(function() {
q[2].click(); }, 3000);
})();


Часовой пояс GMT +3, время: 19:09.