如何在重复的时间内交替按 ClassName 自动单击 2 个按钮?
How to alternate the auto-clicking of 2 buttons by ClassName in a repeating period of time?
我正在尝试制作一个自动点击器,每小时在按钮 1 和 2 之间交替。
但是我在获取代码中具有父子关系的类名时遇到问题,以便单击正确的选项。
按钮如下:
<button class="trick__btn js-cta" data-door="1">Open</button>
<button class="trick__btn js-cta" data-door="2">Open</button>
我已经尝试使用 document.querySelectorAll
来获取特定的类名并单击它,但它不会影响页面:
var classes = document.querySelectorAll('trick__btn js-cta" data-door="1');
var Rate = classes[0];
Rate.click();
很多东西:
- 您的 CSS 选择器是错误的:类 需要一个
.
前缀并选择属性,如下所示。
- 您需要一种方法来记住最后一个按钮——尤其是在页面重新加载时。下面,我使用了一个
sessionStorage
变量。
- 您可能需要等待按钮加载。一种方法是使用
waitForKeyElements()
.
这里是一个显示过程的完整工作脚本:
// ==UserScript==
// @name _Click Alternate buttons
// @match *://YOUR_SERVER.COM/YOUR_PATH/*
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// @grant GM.getValue
// ==/UserScript==
//- The @grant directives are needed to restore the proper sandbox.
/* global $, waitForKeyElements */
/* eslint-disable no-multi-spaces */
waitForKeyElements (".trick__btn.js-cta[data-door='1']", startButtonClicking, true);
function startButtonClicking () {
clickAlternateButton (); // Initial. Comment out to wait for 1st click.
// 5000 = 5 seconds. For 1 hour, use: 3600000.
setInterval (clickAlternateButton, 5000);
}
function clickAlternateButton () {
var zButton;
if (sessionStorage.TM_button_1_WasLastClicked === "true") {
sessionStorage.TM_button_1_WasLastClicked = false;
zButton = $(".trick__btn.js-cta[data-door='2']");
}
else {
sessionStorage.TM_button_1_WasLastClicked = true;
zButton = $(".trick__btn.js-cta[data-door='1']");
}
console.log ("Clicking a button", zButton.attr("data-door"), new Date() );
clickNode (zButton);
}
function clickNode (jNode) {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
jNode[0].dispatchEvent (clickEvent);
}
我正在尝试制作一个自动点击器,每小时在按钮 1 和 2 之间交替。
但是我在获取代码中具有父子关系的类名时遇到问题,以便单击正确的选项。
按钮如下:
<button class="trick__btn js-cta" data-door="1">Open</button>
<button class="trick__btn js-cta" data-door="2">Open</button>
我已经尝试使用 document.querySelectorAll
来获取特定的类名并单击它,但它不会影响页面:
var classes = document.querySelectorAll('trick__btn js-cta" data-door="1');
var Rate = classes[0];
Rate.click();
很多东西:
- 您的 CSS 选择器是错误的:类 需要一个
.
前缀并选择属性,如下所示。 - 您需要一种方法来记住最后一个按钮——尤其是在页面重新加载时。下面,我使用了一个
sessionStorage
变量。 - 您可能需要等待按钮加载。一种方法是使用
waitForKeyElements()
.
这里是一个显示过程的完整工作脚本:
// ==UserScript==
// @name _Click Alternate buttons
// @match *://YOUR_SERVER.COM/YOUR_PATH/*
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// @grant GM.getValue
// ==/UserScript==
//- The @grant directives are needed to restore the proper sandbox.
/* global $, waitForKeyElements */
/* eslint-disable no-multi-spaces */
waitForKeyElements (".trick__btn.js-cta[data-door='1']", startButtonClicking, true);
function startButtonClicking () {
clickAlternateButton (); // Initial. Comment out to wait for 1st click.
// 5000 = 5 seconds. For 1 hour, use: 3600000.
setInterval (clickAlternateButton, 5000);
}
function clickAlternateButton () {
var zButton;
if (sessionStorage.TM_button_1_WasLastClicked === "true") {
sessionStorage.TM_button_1_WasLastClicked = false;
zButton = $(".trick__btn.js-cta[data-door='2']");
}
else {
sessionStorage.TM_button_1_WasLastClicked = true;
zButton = $(".trick__btn.js-cta[data-door='1']");
}
console.log ("Clicking a button", zButton.attr("data-door"), new Date() );
clickNode (zButton);
}
function clickNode (jNode) {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
jNode[0].dispatchEvent (clickEvent);
}