在Angular中,可以使用Protractor来进行端到端测试。Protractor是一个基于Selenium WebDriver的测试框架,特别适用于Angular应用程序的端到端测试。
要解决“Angular的端到端测试在路由之后直到超时之前不会查找标签”的问题,可以使用Protractor的waitForAngularEnabled
方法来等待Angular完成渲染和异步操作。以下是一个示例解决方案:
import { browser, element, by, ElementFinder } from 'protractor';
describe('MyApp', () => {
beforeEach(() => {
// 等待Angular完成渲染和异步操作
browser.waitForAngularEnabled(true);
});
it('should find element after routing', () => {
// 导航到待测试的页面
browser.get('/mypage');
// 获取元素
const myElement: ElementFinder = element(by.css('my-element'));
// 等待元素出现
browser.wait(EC.visibilityOf(myElement), 5000);
// 断言元素是否存在
expect(myElement.isPresent()).toBeTruthy();
});
});
在上面的示例中,首先使用waitForAngularEnabled(true)
来等待Angular完成渲染和异步操作。然后,使用browser.get('/mypage')
导航到待测试的页面。接下来,使用element(by.css('my-element'))
获取待测试的元素。最后,使用browser.wait(EC.visibilityOf(myElement), 5000)
来等待元素出现,并使用expect()
断言元素是否存在。
请注意,上述代码中的EC
是一个预定义的等待条件,用于等待元素的可见性。您可以根据自己的需求使用其他等待条件,例如EC.presenceOf()
来等待元素的存在。
通过使用waitForAngularEnabled(true)
和适当的等待条件,您可以在路由之后正确地查找和操作元素,避免超时的问题。