Angular 量角器在登录后未检测到元素
在登录页面上,一切都很完美,我可以选择输入,选择提交按钮,然后单击提交按钮,url会像我预期的那样更改,但在登录后,由于某种原因,我无法再选择元素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
// #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();
`);