一尘不染

我如何断言一个要素是集中的?

selenium

我正在尝试验证是否在页面加载时设置了聚焦元素,这是我的测试之一。

这似乎是可行的,我可以使用元素资源管理器进行验证,但是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(),因此我认为该测试应该通过了,但事实并非如此。

相反,我得到了一个巨大的堆栈跟踪,其中没有提供任何有用的信息。


阅读 233

收藏
2020-06-26

共1个答案

一尘不染

我想我找到了一种解决方法:

由于expect期望以一个承诺调用,因此您可以比较两个webElement的某些属性(您的输入和当前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'));
});
2020-06-26