var SELECTOR = 'span.title';
horseman
.open(url)
.evaluate(function(selector){
var els = $(selector);
$.each(els, function(i, el){
var event = document.createEvent('MouseEvent');
event.initEvent('click', true, true);
el.dispatchEvent(event);
});
}, SELECTOR)
.then(//other stuff)
.finally(//other stuff
上面的代码点击了它在网站上找到的所有span.title元素。但是我只想点击不包含其中某个元素的那些元素,例如表格,然后点击它,不知道该如何解决这个问题?
答案 0 :(得分:0)
尝试使用.filter()
var selector = "span.title"
, not = function() {
return !this.querySelectorAll("table").length
};
$(selector).filter(not).css("color", "green")

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<span class="title">
<table><tbody><tr><td>table</td></tr></tbody></table>
</span>
<span class="title">not table</span>
&#13;
答案 1 :(得分:0)
想出来!首先感谢@epascarello的建议!
唯一需要做的更改是var SELECTOR
现在看起来像这样
var SELECTOR = 'span.title:not(:has(table))';
这会查找每个span.title
元素,但它包含一个表格,然后不点击它。