Javascript 在量角器e2e测试中找不到Matsnakbar元件
我无法使用量角器定位Matsnakbar元素 这就是我展示快餐店的方式Javascript 在量角器e2e测试中找不到Matsnakbar元件,javascript,angular,protractor,Javascript,Angular,Protractor,我无法使用量角器定位Matsnakbar元素 这就是我展示快餐店的方式 const snackBarRef = this.snackBar.open('Book added.', 'Undo', { duration: 300000 }); 这是e2e测试 const snackBar = element(by.tagName('simple-snack-bar')); browser.wait(ExpectedConditions.visibilityOf(snackBar), 3000
const snackBarRef = this.snackBar.open('Book added.', 'Undo', {
duration: 300000
});
这是e2e测试
const snackBar = element(by.tagName('simple-snack-bar'));
browser.wait(ExpectedConditions.visibilityOf(snackBar), 30000);
element(by.tagName('simple-snack-bar')).getText().then(function (val) {
console.log(val);
expect(val).toEqual('Book added');
});
测试代码因此错误而失败。
错误:超时-在jasmine指定的超时时间内未调用异步回调。默认超时时间间隔。
超时时间来自浏览器。等待30秒,因此应用程序无法在该时间内找到元素。因此,将超时时间增加为:
将以下属性添加到配置文件中:
jasmineNodeOpts: {defaultTimeoutInterval: 40000}
关于未找到的元素
谢谢你的留言,@dplavcic。 我的代码不起作用的原因是snackbar超出了角根。所以我不得不使用
browser.driver.findElement()
而不是element()
,最终解决了这个问题
比如:
public getSnackBar(): promise.Promise<string> {
const snackbar = browser.driver.wait(until.elementLocated(By.tagName('simple-snack-bar')), 10000);
return snackbar.getText();
}```
public getSnackBar():promise.promise{
const snackbar=browser.driver.wait(直到.elementLocated(通过.tagName('simple-snack-bar')),10000);
返回snackbar.getText();
}```
Hi,您是否尝试添加。然后(()=>browser.sleep(60_000))并手动检查标签名为“simple Snakp bar”的元素是否确实存在于页面上。此外,当应用程序运行时,可以手动执行getElementsByTagName()以验证元素是否存在。by.tagName()在内部使用相同的函数。我发现出现此问题是因为我无法使用元素函数指示根目录外的元素。您应该能够通过browser.driver.findElement(by.id('you-element-name'))访问页面上根目录外的任何元素。我尝试了const snackBar=wait browser.driver.findElement(按.tagName('simple-snack-bar'))
但它也失败了。奇怪。我刚刚创建了一个新的Angular应用程序,并将其添加到index.htmloutside app root
,我编辑了一个预生成的测试,以它('should display welcome message',async()=>{wait page.navigate();expect(wait元素(by.id('outside-app-root')).getText()).toEqual('demo-app-is running!');})
它失败,预期的'outside-app-root'等于'demo-app-is running!'。,这是正确的!
public getSnackBar(): promise.Promise<string> {
const snackbar = browser.driver.wait(until.elementLocated(By.tagName('simple-snack-bar')), 10000);
return snackbar.getText();
}```