CasperJS / PhantomJS:waitForSelector('svg') - > svg有时候不会出现

时间:2014-05-22 09:58:09

标签: javascript svg phantomjs casperjs

所以这里有另一个麻烦。我有一个脚本加载svg并等待它出现随机失败。有时幽灵会在加载svg时陷入困境(即使在2分钟内使用waitTimeout,所以我认为这个问题并不存在)。脚本:http:// r.ccmbg.com/js.php?m=highchart=...

我仍然可以在循环中加载页面X次,等待svg出现,但我更喜欢另一种解决方案。如果你有一个想法,我全都耳朵。

简单示例:

casper.test.begin('\n********* Navigation on directories : ***********', 8,{
setUp: function(test) {
    //setLevel("normal");
},

tearDown: function(test) {
    //getJSON();
},

test: function(test){
    "use strict";
    casper.start()
    .thenOpen('http://www.linternaute.com/voyage/climat/paris/ville-75056/2013-2008')
    .waitForResource(/m=highcharts&/, function(){
        this.waitForSelector('svg',function(){
            this.test.assertExists("tspan");
        });
    })      
    .waitForUrl(/2008/, function(){
        this.test.assertSelectorHasText("h2", "maximales");
        this.test.assertSelectorHasText("h2", "minimales");
        this.test.assertSelectorHasText("h2", "Paris");
        this.test.assertSelectorHasText("h2", "Le soleil");
        this.test.assertSelectorHasText("h2", "La pluie");
        this.test.assertExists("div.marB20");
        this.test.assertNotEquals(this.fetchText("div.marB20 > table > thead > tr > th"), " ", "Table first data not empty");
    })
    .run(function() {
        this.test.comment('--- Done ---\n');
        test.done();
    });
}
});

1 个答案:

答案 0 :(得分:0)

好吧,当我不知道所调用的脚本或使用的API时(因此我无法自行调试),我现在只需检查资源。

this.waitForResource(/js\.php\?m=highcharts&v/, function(){
    this.test.pass("ressource received (js -> API highcharts)");
});

请勿忘记此事件以获取页面文档错误:

casper.on("page.error", function(msg, trace) {
    this.echo("Page Error: " + msg, "ERROR");
});

enter image description here