Javascript jQuery:在DOM加载.on()和.click()后单击Chrome

Javascript jQuery:在DOM加载.on()和.click()后单击Chrome,javascript,jquery,html,google-chrome,firefox,Javascript,Jquery,Html,Google Chrome,Firefox,我有一个UI页面要测试,那里有很大的自动化空间。例如,有些按钮可能一次或按顺序全部单击,并执行某些操作。因此,我尝试用JS和jQuery自动点击,从Firefox开始,转到chrome(使用greecemonkey和tempermonkey) 从这两种浏览器的转换并不像我最初想象的那么容易,因为似乎不起作用的是.click();方法(至少尝试从浏览器控制台中单击一些按钮) 从浏览器控制台(chrome)和firebug(firefox)运行时的简化版本: 在chrome上:只需打印出匹配元素的

我有一个UI页面要测试,那里有很大的自动化空间。例如,有些按钮可能一次或按顺序全部单击,并执行某些操作。因此,我尝试用JS和jQuery自动点击,从Firefox开始,转到chrome(使用greecemonkey和tempermonkey)

从这两种浏览器的转换并不像我最初想象的那么容易,因为似乎不起作用的是.click();方法(至少尝试从浏览器控制台中单击一些按钮)

从浏览器控制台(chrome)和firebug(firefox)运行时的简化版本:

  • 在chrome上:只需打印出匹配元素的数组
  • 在firefox上:实际点击链接
运行:

$(".div.tab-pane.active").find(".delete-link").text();
指示元素的目标正确

问题:

我是否需要将带有.on()方法的事件侦听器附加到我尝试单击的按钮上?当我尝试此代码时,它仍然不起作用:

function notify() { 
  $(".div.tab-pane.active").find(".delete-link").click();
  alert( "clicked" );
}

$(".div.tab-pane.active").find(".delete-link").on( "click", notify );

  • 为什么它与Firefox(firebug和greecemonkey)一起工作,而不与chrome一起工作?这两种浏览器有什么不同之处使得.click()的工作方式不同

  • 如何让它工作

您可以使用
.get(index)
方法返回dom节点,并触发其上的事件绑定:

$(".div.tab-pane.active").find(".delete-link").get(0).click();
从文档中:

.get()方法授予对每个jQuery对象下面的DOM节点的访问权

我只想添加
.get(index)
返回与jQuery对象匹配的DOM元素,因此在我们的例子中,选择器是
”。删除链接“
,因此当我们在jQuery/js中绑定一个点击事件时,它只返回DOM元素,因此绑定DOM节点上的点击事件时,您需要使用它进行访问

所以我说:
Chrome不允许间接打开绑定到dom节点的文件或事件。


这可能是由于安全问题,chrome不允许从控制台单击
。现实生活中不存在用户单击多个按钮的情况,这通常是不可能的。您可以在方法级别更好地封装这些函数。最后是一些有建设性的东西。它可以从控制台工作-但您是否可以添加一个简短的解释,说明它为什么工作?我觉得奇怪的是,它可以在FF上工作,但不能在chrome上工作。谢谢
$(".div.tab-pane.active").find(".delete-link").on("click", function(){
    alert("clicked");
});

$(".div.tab-pane.active").find(".delete-link").click();
// causes a stack overflow
$(".div.tab-pane.active").find(".delete-link").get(0).click();