如何在重复的时间内交替按 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();

很多东西:

  1. 您的 CSS 选择器是错误的:类 需要一个 . 前缀并选择属性,如下所示。
  2. 您需要一种方法来记住最后一个按钮——尤其是在页面重新加载时。下面,我使用了一个 sessionStorage 变量。
  3. 可能需要等待按钮加载。一种方法是使用 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);
}