使用el = de.query(By.css('h2')).nativeElement;
本机元素API 是否有任何优势el = de.nativeElement.querySelector('h2');
?它们提供相同的结果。
刚从Angular 4单元测试开始,想知道是否存在任何性能差异,或者由于它们完成相同的工作而需要在其他方面使用的理由。我不确定我了解使用By.css(...)的便利性,或者您可能会在哪种情况/原因下使用另一种方法。
使用By.css而不是使用querySelector和querySelectorAll的原因是,您的测试可能未在完整的浏览器中运行,而是在较轻的测试环境中运行。
大型项目通常会在CI服务器(例如TeamCity或Jenkins)上构建并运行测试,CI服务器可能正在无头云服务器(即没有真正的监视器或GUI)上运行,因此无法运行Chrome或Firefox在其中运行业力测试。
有很多其他方法可以在这样的服务器上运行测试(请参阅此处的列表https://github.com/dhamaniasad/HeadlessBrowsers)。
尽管其中一些模拟了完整的无头浏览器(如PhantomJS),但它们在RAM和CPU方面却相当繁重,因此其他一些虽然轻巧,但可能不支持所有CSS选择器的完整DOM实现。
使用By.css,可以确保测试也可以在不支持完整DOM的平台上运行(并始终运行)。