我试图遍历一组元素,然后点击每个不包含表格的元素,但我似乎无法让它工作。我使用node-horseman。
var SELECTOR = "li:not(:has(table)) h2";
horseman
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0")
.open(url)
.evaluate(function (selector) {
var els = $(selector);
$.each(els, function (el) {
var event = document.createEvent("MouseEvent");
event.initMouseEvent("click",
true, true,
window, null,
0, 0, 0, 0,
false, false, false, false,
0, null);
el.dispatchEvent(event);
});
}, SELECTOR)
.delay(2000)
//then do other scraping stuff
HTML结构(无法发布实际的HTML)
<li>
<h2>
<span class="someclass">TEXT</span>
</h2>
</li>
从上面的HTML中,一些元素可能在h2元素下包含一个表元素。 当我执行此操作时,它不会点击任何内容。
答案 0 :(得分:0)
jQuery.each()
时, arrays将项目的索引作为第一个参数传递,将项目的值作为第二个参数传递。您需要在元素上调用dispatchEvent
而不是Number
。
要么像这样:
var els = $(selector);
$.each(els, function (idx, el) {
...
el.dispatchEvent(event);
或this:
var els = $(selector);
els.each(function () {
...
this.dispatchEvent(event);