Angular 量角器在登录后未检测到元素

Angular 量角器在登录后未检测到元素,angular,protractor,e2e-testing,Angular,Protractor,E2e Testing,在登录页面上,一切都很完美,我可以选择输入,选择提交按钮,然后单击提交按钮,url会像我预期的那样更改,但在登录后,由于某种原因,我无法再选择元素 // #1 login test it('should send check in desktop', async () => { await loginPage.login(environment.e2e.user.phone, environment.e2e.user.password); await logi

在登录页面上,一切都很完美,我可以选择输入,选择提交按钮,然后单击提交按钮,url会像我预期的那样更改,但在登录后,由于某种原因,我无法再选择元素

   // #1 login test
  it('should send check in desktop', async () => {

    await loginPage.login(environment.e2e.user.phone, environment.e2e.user.password);

    await loginPage.verifySuccessfullLogin();
    console.log('After verifySuccessfullLogin');

    await browser.sleep(3000);
    console.log('After sleep');

    const sendBtn = $('#sendCheckBtnDesktop');
    console.log(sendBtn);
    await sendBtn.click();

    // Not getting here
    await browser.sleep(10000);
  });
代码的其余部分:

  navigateToLoginPage() {
    return browser.get(environment.e2e.baseUrl);
  }
  getPhoneInput() {
    return $('#phoneNumber');
  }
  getPasswordInput() {
    return $('#login-password');
  }
  getSubmitButton() {
    return $('#submitLoginBtn');
  }
  verifySuccessfullLogin() {
    return browser.wait(browser.ExpectedConditions.urlContains('/user/personal'), 10000);
  }

  public async login(phone: string = environment.e2e.user.phone, password: string = environment.e2e.user.password) {
    await this.navigateToLoginPage();

    const phoneInput = this.getPhoneInput();
    await phoneInput.sendKeys(phone);

    const passInput = this.getPasswordInput();
    await passInput.sendKeys(password);

    const submitBtn = this.getSubmitButton();
    await submitBtn.click();
  }
这行有问题

return browser.wait(browser.ExpectedConditions.urlContains('/user/personal'), 10000);
应该是的

return browser.wait(protractor.ExpectedConditions.urlContains('/user/personal'), 10000);

我想它被另一个元素隐藏了

您可以尝试:

await browser.executeScript(`
    const btn = document.getElementById('sendCheckBtnDesktop');
    btn.click();
`);
如果它工作,这个元素是不可点击使用量角器可能它后面的另一个元素


您可以阅读更多关于使用量角器点击到JS之间的问题。

因此您解决了这个问题,并在另一个地方提出了相同的问题,正如我所预测的那样。如果你需要我的帮助,我仍然在你身边,只是问我@SergeyPleshakov,你好吗,这是同一个问题,但我发现登录后无法检测元素是很常见的,如果你知道如何解决这个问题,我将不胜感激。@SergeyPleshakov我读了你的一些答案,并决定使用Wait代替。嗨,Sergey,谢谢你的回答,我明白等待是什么,你可以在我的代码中看到我用过几次。有一件事我不明白,那就是登录功能在没有添加wait的情况下工作得很好,我不知道为什么它会工作,我会将代码添加到我的问题中。@offerpe'er在完成之前的一个命令之前执行了一个命令,我按照你的建议添加了wait,并将我的其余代码添加到了问题中,仍然不起作用…当我检查“看一看”和我对答案的补充好的时候,我发现了一个问题和一个有待改进的地方,更新了答案^@officerpe'er
await browser.executeScript(`
    const btn = document.getElementById('sendCheckBtnDesktop');
    btn.click();
`);