我想使用PhantomJS测试AngularJS应用程序。第一步是用username
字段填写登录表单(假设没有其他字段)
通常(在实际浏览器中)此字段由Angular控制(它具有ng-model
属性),整个表单具有ng-submit
属性。
所以在PhantomJS脚本中我做
输入用户名
page.evaluate(function () {
document.getElementsByName('username')[0].value = 'tester';
});
截取屏幕截图,看看“测试人员”出现在输入
中page.render('myfile.jpg');
点击提交按钮:
page.evaluate(function () {
document.getElementById('go').click();
});
再拍一张截图。
我看到的是点击按钮,但会显示消息,表明username
的值为空。所以我猜模型没有正确更新
我还尝试使用jQuery设置这些值 - 结果相同。
如何正确地将值输入到由angular?
控制的字段中答案 0 :(得分:6)
PhantomJS提供sendEvent
函数,可用于实现基本的sendKeys
,但您需要首先关注元素:
function sendKeys(page, selector, keys){
page.evaluate(function(selector){
// focus on the text element before typing
var element = document.querySelector(selector);
element.click();
element.focus();
}, selector);
page.sendEvent("keypress", keys);
}
sendKeys(page, "*[name=username]", "tester");
你可能想要查看似乎为Angular.js测试而定制的protractor或者使用更好的API在PhantomJS之上构建的CasperJS。