我正在尝试通过chrome控制台在javascript中通过flipkart对Buy now
按钮执行点击操作。使用以下代码
function timeout_trigger() {
var buynowButton = document.getElementsByClassName("_2AkmmA _2Npkh4 _2kuvG8 _7UHT_c")[0];
console.log(buynowButton)
buynowButton.click();
}
setTimeout('timeout_trigger()', 2000);
我可以使用我打印的命令在控制台日志中看到按钮元素
console.log(buynowButton)
但是,当buynowButton上的click方法不适用于该翻页卡纸页面
buynowButton.click();
答案 0 :(得分:1)
不要将timeout_trigger
作为字符串调用,而应将其作为引用传递。
尝试:
function timeout_trigger() {
var buynowButton = document.getElementsByClassName("_2AkmmA _2Npkh4 _2kuvG8 _7UHT_c")[0];
console.log(buynowButton)
buynowButton.click();
}
setTimeout(timeout_trigger, 2000);
编辑
答案 1 :(得分:1)
您可以像这样使用它
document.getElementById("btn").addEventListener("click", function(){
console.log('Clicked');
})
var clickBtn = function() {
var buynowButton = document.getElementById('btn');
buynowButton.click();
}
setTimeout(function(){
clickBtn();
}, 1000)
<button id="btn">Click</button>
删除了jQuery并重新添加。
答案 2 :(得分:1)
Flipkart的按钮不使用click()
事件!
它使用Ruby的onClick
和某种复杂的系统来防止自动点击其站点。
他们使用名为handleClick
的函数,将其赋予按钮,就像按钮被命名为onClick
一样,但实际上称为o()
。他们使用特殊的事件来处理它。这就是为什么您不能使用.click()
的原因,他们通过设置btn.click = ()=>{}
来阻止它。他们还使用了非常复杂的系统来防止自动点击,因此从根本上讲,您只需要弄清楚如何绕过该操作即可。
答案 3 :(得分:0)
您只需将函数引用放在setTimeout的第一个参数中。
var timeout_trigger = function(){
var buynowButton = document.getElementsByClassName("_2AkmmA _2Npkh4 _2kuvG8 _7UHT_c")[0];
console.log(buynowButton)
buynowButton.click();
}
setTimeout(timeout_trigger, 2000);
答案 4 :(得分:-3)
在jQuery中触发按钮很容易。
$("#id").trigger('click');
或者简单地
$("#id").click();
此外,请勿将超时函数作为字符串调用。
setTimeout(timeout_trigger(), 2000);