使用Casperjs,我正在尝试将点击事件发送到页面上的其中一个链接。它的位置取决于窗口的大小,因此存在多个实例。出于这个原因,我正在使用基于其父级的选择器。在确认不等于undefined
并且我之前正在检查null
之前,我不会发送偶数。当我打印与我正在使用的选择器匹配的对象时,我得到[object Object]
,但是当我尝试发送click事件时,我收到一条错误,指出"Cannot dispatch mousedown event on nonexistent selector"
。如果querySelectorAll()
返回同一选择器的对象,这怎么可能呢?这是我正在使用的代码。
casper.each(links, function() {
this.waitFor(function check() {
return (this.evaluate(getSelector,'div.talk-hero__tools__list__actions a.rate-button') != undefined);
},
function then() {
this.echo(this.evaluate(getSelector,'div.talk-hero__tools__list__actions a.rate-button'));
this.click('div.talk-hero__tools__list__actions a.rate-button');
});
});
答案 0 :(得分:1)
尝试此操作(在您对evaluate
的通话中添加匿名功能,并将选择器检查从undefined
切换为null
):
this.waitFor(function check() {
return this.evaluate(function() {
return document.querySelector('div.talk-hero__tools__list__actions a.rate-button') !== null;
});
}, function then() {
this.echo(this.evaluate(getSelector,'div.talk-hero__tools__list__actions a.rate-button'));
this.click('div.talk-hero__tools__list__actions a.rate-button');
});
答案 1 :(得分:1)
事实证明casper.each()
没有打开链接。我通过在casper.thenOpen()
中的所有代码周围添加each()
来解决它。