mocha-casperjs:有时 click/waitForXXX 不能立即使用 xpath。

mocha-casperjs: sometimes click/waitForXXX don't work immediately with xpath.

我已经使用 mocha-casperjs 一段时间了,我注意到出于某种原因,有时代码如下:

casper.click(x("//a[normalize-space(text())='login']"));

casper.waitForSelector(x("//a[normalize-space(text())='login']")

没有立即工作,但它没有说: xpath 选择器://[normalize-space(text())='login']" 仍然不存在 5000ms

经过一些尝试,它刚刚好用,但后来又不行了。

不是异步问题,因为我用的代码是这样的:

if(casper.exists(x("//a[normalize-space(text())='login']"))){
  console.log('I am here');
}

测试它的存在,这总是 returns "I am here"。

有什么想法吗?

所以,我认为我遇到的问题与 this question. 有关 我链接到的问题使我进行了进一步的测试并找到了解决方案。我的测试一直失败,那是因为我实际上已经登录了,所以 x("//a[normalize-space(text())='login']") 不是显然有。

下面的代码返回了"I am here",这是因为我做错了。

if(casper.exists(x("//a[normalize-space(text())='login']"))){
  console.log('I am here');
}

我做错的另一件事可能对某人有帮助,但我完全错过了,是我将 casper.start 和 casper.run 移到了 describe("", function(){...} ) 如:

casper.start();

describe("", function(){
    it("...", function(){..})
    it("...", function(){..})
});

casper.run(function(){
 test.done();
});

我希望这对某人有所帮助。

谢谢。