Javascript 量角器:页面更改后等待角度(异步/等待)
我正在为AngularJS应用程序运行量角器测试 我面临以下问题-有时,在页面更改后,量角器在不等待初始化的情况下继续运行。下面是我执行导航的方式Javascript 量角器:页面更改后等待角度(异步/等待),javascript,angularjs,protractor,Javascript,Angularjs,Protractor,我正在为AngularJS应用程序运行量角器测试 我面临以下问题-有时,在页面更改后,量角器在不等待初始化的情况下继续运行。下面是我执行导航的方式 beforeAll(async function() { await browser.get('#/page-url'); }) 有时,工具包中的第一个测试失败了,因为它试图访问页面上的某些元素,而这些元素还不存在,记者向我展示了一个空白页面截图 我尝试了下面的解决方案 但这对我也不起作用。我做错了什么?(AngularJS 1.7.2版/
beforeAll(async function() {
await browser.get('#/page-url');
})
有时,工具包中的第一个测试失败了,因为它试图访问页面上的某些元素,而这些元素还不存在,记者向我展示了一个空白页面截图
我尝试了下面的解决方案
但这对我也不起作用。我做错了什么?(AngularJS 1.7.2版/量角器5.4.0版)使用量角器,可以使用以下方法
var EC = protractor.ExpectedConditions;
// Wait for new page url to contain newPageName
browser.wait(EC.urlContains('newPageName'), 10000);
So your code will look something like,
emailEl.sendKeys('username');
passwordEl.sendKeys('pwd');
btnLoginEl.click();
var EC = protractor.ExpectedConditions;
// Wait for new page url to contain efg
ptor.wait(EC.urlContains('efg'), 10000);
expect(ptor.getCurrentUrl()).toEqual(url + 'abc#/efg');
注意:这可能并不意味着新页面已完成加载,DOM已准备就绪。后续的'expect()'语句将确保量角器等待DOM可用于测试
参考:量角器这是我应该做的:
describe('your test spec description', async () => {
beforeAll( async () => {
await browser.waitForAngular();
await browser.get('#/page-url');
});
it('we can verify that ...', async () => {
let importantElement = element(by.xxx(''));
await browser.wait(
ExpectedConditions.presenceOf(importantElement ),
SHORT_TIMEOUT_MS, 'element is not present')
//test code here, your element is ready
});
});
我不知道你为什么在页面打开之前就放置了
waittforanger()
,所以这可能是你的问题,因为现在还没有什么可以等待的。因此,试着这样做
beforeAll( async () => {
await browser.get('#/page-url');
await browser.waitForAngular();
});
但有时这是不够的,豪斯的答案适用于这种情况。首先,您可以等待任意多的元素,其次,您可以观察最后一个填充的元素并等待它,或者您可以等待下一个要交互的元素(无需等待所有元素)。好建议,尽管这看起来就像一个解决方法,但如果我有很多不同的元素该怎么办?这将是一个巨大的代码块,只是等待元素出现,应该有另一个解决方案我不熟悉您的具体情况,但我不同意“变通方法”。如果您的元素在那里,我相信它是可测试的(在e2e中)。我从来没有听说过其他任何类似的方法…:-)花了一段时间后,我不得不承认你的回答是唯一对我起作用的答案<代码>等待浏览器。当路由更改时,获得,但当角完成编译时,放置<代码>等待浏览器。代码中的WaITFrOrthOb/ToC>不能证明它是UTITIY放置在前面的,因为这是在UnD下使用这种方法的量角器团队如何再一次考虑Huns的答案,虽然这对我来说真的很奇怪,量角器团队没有想出一个优雅的方式来考虑页面是完全LoADDHEE!感谢您的关注,尽管1)我使用的是异步/等待方法,这似乎与常规的
控制流
2)更改的url如何证明DOM是如何完成的?肯定不是AngularJS应用程序的情况
beforeAll( async () => {
await browser.get('#/page-url');
await browser.waitForAngular();
});