【发布时间】:2015-08-02 20:49:27
【问题描述】:
我想使用 CasperJS 在我的网页上编写一个功能测试,即:
- 填写登录表单
- 提交登录表单
- 检查动态加载的内容
前两个步骤我已经完成了,但第三个步骤有问题。我登录后得到的 HTML 结构与我在里面看到的不太一样,即 Chrome 开发者控制台。缺少一些内容 - 就像我只能在我的 index.html 文件中获得可用的结构,但仅此而已。
这是我的测试代码:
var casper = require('casper').create();
var loginForm = 'form[name="login"]';
var orderMenuItem = '.rst-menu-orders';
casper.start('https://mywebpageaddress.com/');
casper.waitForSelector(loginForm, function(){
this.echo(this.getCurrentUrl());
this.fillSelectors(loginForm, {
'input[name="username"]': '1234',
'input[name="password"]': '1234'
}, true);
});
casper.thenOpen('http://mywebpageaddress.com/subpage', function(){
this.echo(this.getCurrentUrl());
this.waitForSelector('.rst-tab-menu-element', function() {
this.echo(document.querySelectorAll('.rst-tab-menu-element').length);
});
});
casper.run();
所以每次我运行这个测试时,我都会收到 5000 毫秒超时过期的消息,这意味着 '.rst-tab-menu-element' 不存在,但我知道它存在于 DOM 中,因为我可以在 Chrome 中看到它,即.
我已经尝试等待 20000 毫秒,希望内容能够加载,但似乎问题出在其他问题上。我正在使用 Require JS 加载我的 javascript 文件,我想知道 - 也许这可能是一个问题?对于如何完成这项工作的一些提示,我将不胜感激。
我也收到参考错误:
Error: ReferenceError: Can't find variable: define
Error: ReferenceError: Can't find variable: jQuery
Error: ReferenceError: Can't find variable: require
Error: ReferenceError: Can't find variable: requirejs
【问题讨论】:
-
代码看起来不错。您是否已转储页面源以查看已加载的内容?请注册
resource.error、page.error、remote.message和casper.page.onResourceTimeout活动 (Example)。可能有错误。 -
@ArtjomB。谢谢。我得到了参考错误所以现在至少我知道出了什么问题。
-
这可能意味着某些脚本无法加载。你试过以
casperjs --ssl-protocol=any --ignore-ssl-errors=true --web-security=false script.js运行吗?您能否将错误添加到您的问题中? -
@ArtjomB。我添加了错误。我想我必须注入丢失的脚本。我已经尝试使用这些标志运行测试,但我得到了同样的错误。
-
顺便问一下你用的是什么PhantomJS版本,你试过升级到2.0.0吗?
标签: javascript testing requirejs casperjs functional-testing