0

我在 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');
});
4

1 回答 1

0

您应该使用casper.waitFor以确保已加载下一页。否则 phantom 将在表单提交得到答复之前截取屏幕截图。

于 2013-02-21T07:31:52.017 回答