刚进入CasperJS,我遇到了一种奇怪的行为。这是我脚本的一部分。它会查找如下所示的链接:
<a id="logout" href="...">xxx</a>
我有一个独特的标签来帮助找到它。 test.assertExists()有效,但this.click()没有。这很令人费解,因为他们有相同的选择器。
casper.test.begin('Initial login & logout testing', 2, function suite(test) {
casper.start(startUrl);
casper.then(function() {
this.waitForSelector('li a#logout', function() {
test.assertExists('a#logout', "logout button is found");
this.click('a#logout');
});
});
casper.run(function() {
test.done();
});
});
输出:
PASS logout button is found
[debug] [phantom] Mouse event 'mousedown' on selector: a#logout
[error] [remote] mouseEvent(): Couldn't find any element matching 'a#logout' selector
我期待一致的行为。有线索吗? 谢谢!
[更新]我有一个解决方法。我替换this.click('a#logout');以下内容:
this.evaluate(function() {
document.querySelector('a#logout').click();
});
它可以解决问题。我现在使用它,虽然我希望我知道为什么它没有按照预期的方式工作。