我尝试创建一个脚本,该脚本每31秒单击一个按钮。该网站包含许多类为reply-markup-button rp tgico的按钮。为了选择要查找的确切按钮,我使用document.getElementByTagName和for循环查找按钮上的确切文本:第一个问题是,也有许多按钮上有“查看广告”,我只希望脚本单击第一个,而不是所有按钮。
reply-markup-button rp tgico
document.getElementByTagName
sxpgvts31#
点按第一个匹配按钮后,添加对break(或return)的调用:
break
return
var viewAdsButton = document.getElementsByTagName("button"); var viewAdsButtonText = "View ads"; setInterval(function(){ for (var i = 0; i < viewAdsButton.length; i++) { if (viewAdsButton[i].textContent == viewAdsButtonText) { viewAdsButton[i].click() break // Stop looping } } }, 31000);
ktca8awb2#
我没有使用getElementsByTagName(),而是使用querySelector()获取了您列出的类的第一个按钮。然后,您可以在setInterval()函数中添加一个click事件,而无需循环任何内容。我还使用了querySelectorAll(),并执行了一个forEach()循环,为每个包含这些类的按钮添加了一个onclick事件侦听器,以显示setInterval()函数只单击了第一个按钮。第一个
getElementsByTagName()
querySelector()
setInterval()
querySelectorAll()
forEach()
cgvd09ve3#
如果有很多按钮,不要尝试使用document.getElementsByTagName或document.getElementsByClassName。它们返回一个元素集合,要找到你想要的确切元素要困难得多。还要考虑以下情况:如果两个按钮具有相同的文本,或者网站更新并且按钮文本更改,该怎么办?以下是一些更好的方法:首先,查看浏览器开发工具中的按钮,如果它有ID,则使用document.getElementsById,如下所示:
document.getElementsByTagName
document.getElementsByClassName
document.getElementsById
var viewAdsButton = document.getElementsById("some-button-id"); setInterval(function() { viewAdsButton.click(); }, 31000);
如果按钮没有ID,那么你应该通过它的XPath来获取元素。XPath只是一个字符串,它唯一地代表DOM层次结构中的一个元素,但这并不重要。你可以在dev工具中复制元素XPath(Copy -〉Copy XPath)。使用下面的代码来获取XPath:
var viewAdsButton = document.evaluate("some-button-xpath", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; setInterval(function() { viewAdsButton.click(); }, 31000);
(See this answer,了解有关通过XPath获取元素的详细信息)
3条答案
按热度按时间sxpgvts31#
点按第一个匹配按钮后,添加对
break
(或return
)的调用:ktca8awb2#
我没有使用
getElementsByTagName()
,而是使用querySelector()
获取了您列出的类的第一个按钮。然后,您可以在setInterval()
函数中添加一个click事件,而无需循环任何内容。我还使用了
querySelectorAll()
,并执行了一个forEach()
循环,为每个包含这些类的按钮添加了一个onclick事件侦听器,以显示setInterval()
函数只单击了第一个按钮。第一个
cgvd09ve3#
如果有很多按钮,不要尝试使用
document.getElementsByTagName
或document.getElementsByClassName
。它们返回一个元素集合,要找到你想要的确切元素要困难得多。还要考虑以下情况:如果两个按钮具有相同的文本,或者网站更新并且按钮文本更改,该怎么办?以下是一些更好的方法:
首先,查看浏览器开发工具中的按钮,如果它有ID,则使用
document.getElementsById
,如下所示:如果按钮没有ID,那么你应该通过它的XPath来获取元素。XPath只是一个字符串,它唯一地代表DOM层次结构中的一个元素,但这并不重要。你可以在dev工具中复制元素XPath(Copy -〉Copy XPath)。使用下面的代码来获取XPath:
(See this answer,了解有关通过XPath获取元素的详细信息)