我有一个 angular.js 应用程序,它应该在做某事时将焦点设置到特定元素(即,将焦点设置到无效的表单字段以让用户更正错误)。
我正在尝试在 angular-e2e 测试中测试这种行为:
it('should set the focus to the invalid field', function() {
input('email').enter('foo'); // this is not a valid email address
element(/* submit button */).click(); // try to submit the form
// How do I do this?
expect(element(/* email input element */)).toHaveTheFocus();
});
我怎么能期望某个元素(不)成为焦点?我已经尝试过 ':focus' 选择器
expect(element('input[id="..."]:focus').count()).toBe(1);
但没有成功(灵感来自测试某些元素是否可见)。
为了设置焦点,我使用了如何在输入字段上设置焦点的想法?
我也在为此编写单元测试,并最终在 DOM focus() 函数上使用了一个间谍(据我所知,这对于 e2e 测试来说是不可能的/不可取的)。