我在黄瓜的多个功能上遇到以下失败:“ NoSuchElementError:使用定位器未找到任何元素:By(css选择器,h1)”
我尝试设置更大的超时时间,以便给Cucumber更多的时间来查找元素,但这似乎不起作用
以下是测试的主要组成部分: cardTitle.feature:
@cardTitle-feature
Feature: See card title
Display the card title
@cardTitle-scenario
Scenario: Card Page
Given I am on the card page
When I do nothing
Then I should see the card title
app.steps.ts:
// Go to the card - Display the title
Given(/^I am on the card page$/, async () => {
await page.navigateToCard();
});
When(/^I do nothing$/, () => {
});
Then(/^I should see the card title$/, async () => {
expect(await page.getCardTitleText()).to.equal('Profile');
});
app.po.ts:
navigateToCard() {
this.sleep(3000);
return browser.get('/card');
}
getCardTitleText() {
this.sleep(3000);
return element(by.css('h1')).getText();
}
card.html:
<div class="profile-container">
<!-- EXAMPLE TOP NAV -->
<h1>Profile</h1>
...
我认为可能会发生这种情况,因为如果不登录应用程序,可能无法访问“卡”。如果这是问题,我该如何执行测试以登录到应用程序,然后检查“ h1”元素? 谢谢!
答案 0 :(得分:0)
伟大的写作!感谢所有细节,这对您有很大帮助。这是我的想法:
v-btn
休眠页面对象?或者,如果出于某种原因要避免页面对象中的异步函数,也可以保证将await
链接到sleep
。get
作为每个waitForAngular
的一部分运行,应该等到页面完全加载后再继续browser.get
是页面对象基类中的一种方法?我有点期待this.sleep
。顺便说一句,我在量角器的browser.sleep
和$
别名中走了很多路,它们是如此干净。你可以缩短
$$
为了公正
return element(by.css('h1')).getText();
如果您愿意。