Javascript Can';t使用CasperJS单击有效选择器
使用Casperjs,我试图向页面上的一个链接发送一个click事件。它的位置取决于窗口的大小,因此存在多个实例。因此,我使用基于其父级的选择器。我不发送偶数,直到确认它不等于Javascript Can';t使用CasperJS单击有效选择器,javascript,css-selectors,casperjs,Javascript,Css Selectors,Casperjs,使用Casperjs,我试图向页面上的一个链接发送一个click事件。它的位置取决于窗口的大小,因此存在多个实例。因此,我使用基于其父级的选择器。我不发送偶数,直到确认它不等于undefined,并且我之前检查了null。当我打印与我正在使用的选择器匹配的对象时,我会得到[object object],但当我尝试分派click事件时,我会收到一个错误,说明“无法分派不存在的选择器上的mousedown事件”。如果querySelectorAll()为同一选择器返回对象,这怎么可能呢。这是我正在使
undefined
,并且我之前检查了null
。当我打印与我正在使用的选择器匹配的对象时,我会得到[object object]
,但当我尝试分派click事件时,我会收到一个错误,说明“无法分派不存在的选择器上的mousedown事件”
。如果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');
});
});
尝试此操作(在调用evaluate
时添加匿名函数,并将选择器检查从未定义
切换到null
):
因此,
casper.each()
并没有打开链接。我通过在each()
中的所有代码周围添加一个casper来解决这个问题 你为什么不使用waitForSelector?我还没有意识到它的存在。然而,当我尝试它时,我看到了与我遵循下面建议时相同的结果。你试图使TED自动化,对吗?奇怪的是,我在使用waitForSelector
和单击时没有出现这样的错误,但页面上也没有发生任何事情。我正在使用幻影1.9.7和casper 1.1.0-beta3。事实上,我非常敏锐。我试过这个,它超时了。如果对该选择器的查询以前返回了值,那么这怎么可能呢?您知道,这个答案对这个问题没有意义,因为它没有说明任何关于每个
或打开
。也许您应该编辑您的问题(通过添加脚本的一部分)以匹配您的答案。
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');
});