javascript - 在页面加载时自动按下特定按钮的方法?

标签 javascript google-chrome automation userscripts tampermonkey

我正在尝试找出一种方法,通过在 Tampermonkey 中用 Javascript 编写的用户脚本,在特定页面加载时简单地单击特定按钮(它是一个 href)。这看起来很简单,但经过多次迭代后,我的任何代码都无法正常工作。

这是我想要按下的 href 和按钮的完整源代码:

<span data-react-class="require('reactComponents/workPipeline/SubmitAcceptTaskForm')['SubmitAcceptTaskFormLink']" data-react-props="{&quot;text&quot;:&quot;accept&quot;,&quot;refTag&quot;:&quot;w_wp_acpt_warning&quot;}"><span data-reactid=".4"><a href="#" data-reactid=".4.0">accept</a></span></span>

这是我一直在尝试使用的代码(我已经分别测试了每一行,但无济于事):

// ==UserScript==
// @name         Accept Button WIP
// @include      https://worker.mturk.com/projects/*
// ==/UserScript==

location.href = document.querySelector("a[href='#']");

document.querySelector("a[data-reactid='.4.0']").click();

document.getElementsByClassName(".4.0")[0].click();

location.href = document.querySelector("a[href='#']");

location.data-reactid = document.querySelector("a[data-reactid='.4.0']").click();

document.querySelector("span[data-reactid='.4']").click();

这是所有内容的屏幕截图,包括按钮所在的 DIV(鼠标悬停在必要的“接受”按钮上):

enter image description here

我不太确定自己做错了什么。我认为我尝试过的其中一行代码会起作用,但在语法方面我可能忽略了一些东西。任何和所有帮助将不胜感激。祝你度过美好的一天和一晚。

最佳答案

很难说出为什么它不适合你......对我来说,它在本地主机上进行以下 HTML 测试时没有问题:

<html>
<head>
<script type='text/javascript'>
function check(){
    console.log('Hellow world');
}
</script>
</head>
<body>
<span data-react-class="require('reactComponents/workPipeline/SubmitAcceptTaskForm')['SubmitAcceptTaskFormLink']" data-react-props="{&quot;text&quot;:&quot;accept&quot;,&quot;refTag&quot;:&quot;w_wp_acpt_warning&quot;}"><span data-reactid=".4"><a href="#" data-reactid=".4.0"  onclick='check()'>accept</a></span></span>
</body>
</html>

以及以下用户脚本:

// ==UserScript==
// @name         Autoclick
// @namespace    http://tampermonkey.net/
// @version      0.1
// @match        http://localhost/test.html
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';
    document.querySelector("a[data-reactid='.4.0']").click();
})();

对我来说,它在没有自动执行功能的情况下工作,我只是添加了 @run-at directive很好的衡量标准,但没有它也能工作。

“Hello World” 消息在页面加载后出现在控制台上。

一个提示是,大多数时候,您要在用户脚本上运行的代码应该与从控制台运行的代码完全相同。通过这种方式,您可以实时测试哪些有效或无效。

关于javascript - 在页面加载时自动按下特定按钮的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51270974/

相关文章:

ios - 在 Mac 中启动并运行 appium

javascript - JSON 附加响应以及链接中的属性

javascript - 使用 html-javascript 从 2 个列表的输入中打印一个电子邮件 ID 列表

css - 为什么填充和显示 CSS 属性适用于 Chrome 中的 tr 元素?

jquery - IIS HTTP 错误 400(无效动词)——请求损坏?

vim - 将键附加到 vim 中较早的录音

vba - IE9 自动保存对话框 (vba)

javascript - 如何使用 Javascript/JQuery 将 date_select 值构造为单一日期格式?

javascript - React 看到除数组之外的所有内容

python - 用 selenium 打开的 Chrome 页面仍然空白