我试图使用angular的e2e测试框架设置文本字段值。根据他们的文件,我必须使用:
input(<model>).enter(<value>)
然而,由于模型嵌入在中继器中,传递模型并不是直接从测试上下文中传递的。不过,我可以使用
element('my_element_here', 'description')
然而,.enter(<value>)
调用显然只能从input()
返回的内容中调用,我不知道如何将element
的返回转换为input()
的返回,所以我可以简单地对其调用enter()
!!
我不得不假设我只是忽略了什么。。。
好消息是,只需使用element()就可以获得所需的功能。
element('my_element_here').val('Value I want to enter!')
expect(element('my_element_here').val()).toEqual("Value I want to enter!")
基本上,element()调用可以与以下任何jQuery式方法链接:
val, text, html, height, innerHeight, outerHeight, width, innerWidth, outerWidth,
position, scrollLeft, scrollTop, offset.
Angular的E2E测试线束…很有趣。急需一些TLC。但事实上,一旦你克服了它的尴尬,它就非常擅长它的功能!(假设您在文档中幸存下来)
这对我来说很有效:触发特定元素上的事件输入
var evtInput = document.createEvent('Event');
evtInput.initEvent('input', true, false);
element('#my-element').query(function(el, done) {
el[0].dispatchEvent(evtInput);
done();
});
我想补充一下,为了准确模拟输入行为,您需要触发一个"更改"事件(.val()确实会这样做)
element('my_element_here').val('Value I want to enter!");
element('my_element_here').trigger('input'); // Or 'change' if do not support 'input'