【发布时间】:2017-02-21 00:00:41
【问题描述】:
我正在使用 capserjs 来测试我的应用程序。但问题是,正文没有加载,即在呈现的<ng-Outlet> 标签中没有标签/元素。任何等待时间都无济于事。不知道是什么导致了这个问题。任何指针都会有所帮助。
casper.start('URL', function() {
this.viewport(1300,750);
this.waitForSelector('#user',function(){
this.sendKeys('#user','username');
this.sendKeys('#passwd','passwd');
this.echo('All values are entered');
},function(){},20000);
});
casper.thenEvaluate(function(){
document.getElementById('sign_in').click();
});
casper.then(function(){
this.wait(5000);
this.captureSelector('InitialPage_1.png','body');
this.echo(this.getCurrentUrl());
this.waitForText("Trash",function(){
this.captureSelector('InitialPage_2','html');
}, function(){
this.echo(this.getCurrentUrl());
this.echo(this.getHTML());
}, 15000);
});
casper.run();
注意:当我使用 chrome 或 FF 驱动程序使用 selenium 运行同一页面时,它工作正常。
【问题讨论】:
-
您在此处添加了一些(未缩进!!!)代码。你在什么时候有问题?
casper.wait是异步的,但casper.captureSelector是同步的,所以casper.captureSelector将始终在 beforecasper.wait之前执行,无论您尝试等待多少时间。 -
感谢您的回复。如果您注意到,我已经延迟了 15000 时间以使文本“垃圾”出现在页面上。但是“InitialPage_2”永远不会打印出来。我进一步分析了这个问题......我正在使用 phantomcss 和 phantomxhr 来解决这个问题。所以我注意到的是,API 调用永远不会进行,因此如果主体为空。执行在某个时候突然停止。有什么方法可以调试为什么没有进行这些调用??
-
如果您尝试渲染整个页面,我不明白您为什么要使用
casper.captureSelector(html和body都代表可见页面)。试试casper.capture。另一个问题是你为什么使用casper.thenEvaluate(function(){ document.getElementById('sign_in').click(); });而不仅仅是casper.thenClick('#sign_in')? -
正如您所说的那样,这里发布的代码确实是意外代码!!。我按照您的建议使用了
casper.capture,但结果是一样的。我有一个没有内容的空白页。对于第二个问题,我的第一次尝试是casper.click('#sign_in'),它就是拒绝工作!!!所以我选择了 Jquery 方法。但我真正的问题是,对于使用 angular 开发的项目,是否有理由在 phantomjs 中调用 API 调用? -
您使用哪个 PhantomJS 版本?请注册
resource.error、page.error、remote.message和casper.page.onResourceTimeout活动(Example)。可能有错误。
标签: javascript phantomjs casperjs