我正在尝试修改下面的脚本,点击网站上的这样一个按钮:
<button id="checkPrice-02070" onclick="checkPrice(02070,null); return false;" class="orangeDark">
<span>check price</span>
</button>
我正在使用以下代码。到目前为止,页面似乎一直在重装;没有别的事情发生 对新人的任何建议?
(function () {
window.addEventListener("load", function (e) {
clickConfirmButton()
}, false);
})();
function clickConfirmButton() {
var buttons = document.getElementsByTagName('button');
var clicked = false;
for (var index = 0; (index < buttons.length); index++) {
if (buttons[index].value == "check price") {
buttons[index].click();
clicked = true;
break;
}
}
if (!clicked) {
setTimeout("window.location.reload()", 300 * 1000);
}
}
答案 0 :(得分:0)
<button>
value
不是可见文字。您想要搜索textContent
。
<强>然而强>
如果该示例HTML正确无误,那么您最好搜索以checkPrice
开头的ID。请参阅以下代码。
如果找不到按钮,您确定要重新加载吗?如果它是由AJAX添加的,这不是最好的方法。请参阅this answer。
不要将setTimeout
与字符串(评估)参数一起使用。请参阅以下代码。
您无需将代码包装在匿名函数中。
无论如何,这应该有效,给定样本HTML:
window.addEventListener ("load", clickConfirmButton, false);
function clickConfirmButton (zEvent) {
var button = document.querySelector ("button[id^='checkPrice']");
if (button) {
button.click ();
}
else {
setTimeout (function () { location.reload(); }, 300 * 1000);
}
}
要检查按钮文本,请使用:
function clickConfirmButton (zEvent) {
var buttons = document.querySelectorAll ("button[id^='checkPrice']");
var clicked = false;
for (var index = 0, numBtn = buttons.length; index < numBtn; ++index) {
if (/check price/i.test (buttons[index].textContent) ) {
buttons[index].click();
clicked = true;
break;
}
}
if (!clicked) {
setTimeout (function () { location.reload(); }, 300 * 1000);
}
}