Selenium 量角器:点击后如何正确等待?

Selenium 量角器:点击后如何正确等待?,selenium,protractor,selenium-chromedriver,e2e-testing,Selenium,Protractor,Selenium Chromedriver,E2e Testing,我正在使用量角器进行e2e测试。测试应该首先输入太短的用户名和密码,并且由于角度验证器在单击“提交”按钮时被禁用,因此会被拒绝并保持不变,这是有效的!,然后,它应该输入一个正确长度的用户名和一个正确长度的密码,点击提交按钮,不要被重定向,因为这是一个错误的登录。这失败了。。。最后一个测试需要输入正确的登录详细信息,然后单击submit,并将其重定向到仪表板。 根据这个答案,解决我的问题所需要的一切似乎都是错误的 - Failed: script timeout (Session info

我正在使用量角器进行e2e测试。测试应该首先输入太短的用户名和密码,并且由于角度验证器在单击“提交”按钮时被禁用,因此会被拒绝并保持不变,这是有效的!,然后,它应该输入一个正确长度的用户名和一个正确长度的密码,点击提交按钮,不要被重定向,因为这是一个错误的登录。这失败了。。。最后一个测试需要输入正确的登录详细信息,然后单击submit,并将其重定向到仪表板。 根据这个答案,解决我的问题所需要的一切似乎都是错误的

- 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');
  });
更新 jwt令牌作为cookie发送作为响应,这可能是问题的一部分。我似乎无法在网上找到有关如何使用量角器处理cookies的信息。

在量角器中等待 等待元素出现

等待元素显示

睡眠状况

预期条件


根据此问题添加browser.waitForAngularEnabledfalse;在按钮点击似乎解决了错误之前。

您是否使用browser.waitForAngularEnabledfalse或browser.ignoreSynchronization在任何阶段禁用了角度等待?@DublinDev刚刚搜索了我的整个代码库,不,我没有用这两种方法禁用它。是清除字段还是输入第二个测试用例的值?@DublinDev清除字段以便可以输入新的输入。这些字段的清除操作和新文本输入是否在第二个测试用例中成功工作?谢谢您的回答。我应该在代码中使用哪一个?睡眠条件不起作用。也许我的代码还有其他问题,只有等待部分?你能看一下吗?简单,写browser.sleep5000。它将等待5秒钟。将其放在单击按钮之后。它不工作:/抛出相同的-失败:脚本timeout@Debasish用这种方式把你的电话号码写在帖子上是个坏主意。您应该删除它,并以另一种方式请求OP包含屏幕截图。
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);
}