在 PhantomJS 中尝试使用 .click() 单击元素通常会失败,从而导致诸如“undefined is not a function.”之类的错误。 ……”。出现此问题的原因是 .click() 不是标准 DOM 规范的一部分。
要成功单击某个元素,需要创建并调度一个事件,如下所示:
function click(el) { var ev = document.createEvent("MouseEvent"); ev.initMouseEvent( "click", true /* bubble */, true /* cancelable */, window, null, 0, 0, 0, 0, /* coordinates */ false, false, false, false, /* modifier keys */ 0 /*left*/, null ); el.dispatchEvent(ev); }
然后,您可以使用此函数通过将其作为参数传递来单击所需的跨度元素:
click(document.getElementById('idButtonSpan'));
此方法模拟鼠标单击事件,允许即使元素没有内置点击功能,您也能成功点击元素,解决了 Casper 在这种特定场景中面临的限制。
以上是为什么 PhantomJS 中 `.click()` 失败以及如何正确单击元素?的详细内容。更多信息请关注PHP中文网其他相关文章!