我正在尝试验证是否在页面加载时设置了聚焦元素,这是我的测试之一。
这似乎是可行的,我可以使用元素资源管理器进行验证,但是Jasmine匹配器似乎对此并不满意。
这是我的代码:
var LoginPage = function () { this.basePath = browser.params.baseUrl; this.loginPart = "/#/login"; this.usernameInput = element(by.model('username')); this.get = function () { ... } } it('should focus on the username field on load', function () { loginPage.get(); expect(loginPage.usernameInput).toBe(browser.driver.switchTo().activeElement()); });
当页面加载时,字段本身正确地获得了焦点(并且元素资源管理器正确地使我可以通过来查询此内容browser.driver.switchTo().activeElement(),因此我认为该测试应该通过了,但事实并非如此。
browser.driver.switchTo().activeElement()
相反,我得到了一个巨大的堆栈跟踪,其中没有提供任何有用的信息。
我想我找到了一种解决方法:
由于expect期望以一个承诺调用,因此您可以比较两个webElement的某些属性(您的输入和当前activeElement):
expect
activeElement
it('should focus on the username field on load', function () { loginPage.get(); expect(loginPage.usernameInput.getAttribute('id')).toEqual(browser.driver.switchTo().activeElement().getAttribute('id')); });