【发布时间】:2023-04-02 17:43:01
【问题描述】:
我正在尝试验证焦点元素是否在页面加载时设置为我的测试之一。
这似乎有效,我可以使用元素浏览器进行验证,但 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() 进行查询,所以我认为这个测试应该通过,但事实并非如此。
相反,我得到了一个巨大的堆栈跟踪,它没有提供任何有用的信息。
【问题讨论】:
-
expect(browser.driver.switchTo().activeElement()).toBe(loginPage.usernameInput)会发生什么? -
@ivarni - 我得到
Error: expect called with WebElement argment, expected a Promise. Did you mean to use .getText()?而不是大堆栈跟踪。 -
好的,我在想问题可能是
.switchTo().activeElement()有某种异步副作用,并且直到评估期望之后焦点才真正改变,但事实并非如此那么情况。
标签: angularjs selenium jasmine protractor