我在Windows 8上使用PhantomJS 1.8.1下的CasperJS 1.0.2。
尝试为网站编写测试。该网站严重依赖JS,编码原理很不寻常,可能会产生一些问题,但我不确定。
以下是我用来测试登录和搜索功能的代码:
var url = 'http://www.testsite.com/';
var casper = require('casper').create();
casper.start();
casper.start(url, function() {
this.echo('Page: ' + this.getTitle());
this.capture('start.png');
if (this.exists('input#TxtUserName')) {
this.sendKeys('input#TxtUserName', 'testlogin');
this.sendKeys('input#TxtPassword', 'testpass');
this.click('input#BtnLogin');
this.capture('loggedin.png');
}
});
casper.then(function() {
this.capture('beforesearch.png');
this.sendKeys("input#txtSearch", '1002');
this.click("input#cmdSubmit");
this.echo('Searching');
this.capture('aftersearch.png');
});
casper.run();
当我运行此代码时,屏幕截图上的每个页面都是相同的,只有登录信息填写在login.png上。在点击事件之后,它实际上没有登录(使用我的真实登录凭据)。点击后,搜索结果也不显示。
有什么可能导致这种情况的线索?
提交搜索后,这是我的waitFor代码:
casper.waitForText("Part:", function() {
this.capture('searchresults.png');
});
答案 0 :(得分:0)
您应该使用casper.waitFor
来确保已加载下一页。否则幻像将在表单提交被回答之前截取屏幕截图。