我正在使用量角器进行e2e测试。测试应该首先输入太短的用户名和密码,并且由于 Angular 验证器在单击提交按钮(已禁用(时被拒绝并保持原样(这有效!(,然后它应该输入正确长度的用户名以及正确长度的密码,单击提交按钮并且不会被重定向, 因为它是错误的登录。这失败了...最后一个测试需要输入正确的登录详细信息并单击提交,并应重定向到仪表板。 根据这个答案 https://stackoverflow.com/a/21785088/12360035 解决我的问题所需要的一切,这似乎抛出了
- Failed: script timeout
(Session info: chrome=79.0.3945.130)
(Driver info: chromedriver=79.0.3945.16 (93fcc21110c10dbbd49bbff8f472335360e31d05-refs/branch-heads/3945@{#262}),platform=Windows NT 10.0.18362 x86_64)```
我的两个测试都出错。 我该如何解决这个问题? 我的测试是这样编写的:
it('should enter too short username and password and NOT get redirected => stay put', () => {
element(by.css('#inputUser')).sendKeys('bah');
element(by.css('#inputPassword')).sendKeys('bah');
const btn = element(by.css('#loginSubmit'));
btn.click();
const curUrl = browser.getCurrentUrl();
expect(curUrl).toBe('http://localhost:4200/avior/login');
});
it('should enter incorrect username and password and NOT get redirected => stay put', () => {
const ele1 = element(by.css('#inputUser'));
const ele2 = element(by.css('#inputPassword'));
const btn = element(by.css('#loginSubmit'));
ele1.clear();
ele2.clear();
ele1.sendKeys('bah');
ele2.sendKeys('bahbahbah');
btn.click();
browser.waitForAngular();
const curUrl = browser.getCurrentUrl();
expect(curUrl).toBe('http://localhost:4200/avior/login');
});
it('should enter correct username and password and get redirected to /avior/dashboard', () => {
const ele1 = element(by.css('#inputUser'));
const ele2 = element(by.css('#inputPassword'));
const btn = element(by.css('#loginSubmit'));
ele1.clear();
ele2.clear();
ele1.sendKeys('Chad');
ele2.sendKeys('chadchad');
btn.click();
browser.waitForAngular();
const curUrl = browser.getCurrentUrl();
expect(curUrl).toBe('http://localhost:4200/avior/dashboard');
});
更新作为 cookie 发送 jwt 令牌作为响应,这可能是问题的一部分。我似乎无法在网上找到有关如何使用量角器处理cookie的信息。
等待量角器
等待元素呈现
this.waitForElementPresent = function (element) {
return browser.wait(() => (element.isPresent()), 30000);
}
等待元素显示
this.waitForElementDisplayed = function (element) {
return browser.wait(() => (element.isDisplayed()), 30000);
}
睡眠状况
this.sleep = function (sec) {
browser.sleep(sec * 1000);
}
预期条件
this.waitForElementVisibility = function () {
let EC = ExpectedConditions;
return browser.wait(EC.visibilityOf(), 30000);
}
根据这个问题 失败:脚本超时:11 秒内未收到结果 发件人:任务:量角器.waitForAngular(( - 定位器:By(css 选择器,#my-btn( 在按钮单击之前添加browser.waitForAngularEnabled(false);
似乎已经解决了错误。