【发布时间】:2018-05-21 09:16:23
【问题描述】:
我对 Angular 4/ASP.NET Core Web API 应用程序进行了 E2E 测试(使用 Selenium WebDriver)。
在某些测试中,我偶尔会遇到超时/等待问题。
E2E 框架有一个方法 WaitForAngular(),它使用一些 Javascript(取自 Protractor)等待 Angular 在继续之前表明它已加载所有“可测试性”(参见https://stackoverflow.com/a/39349865/95423)
然而,这似乎并不完全可靠,有时在运行中我们会出现无限期等待。
我们使用的另一种方法是隐式等待相关元素被渲染:
var url = "targetURL"
Driver.Instance.Navigate().GoToUrl(url);
var waitSeconds = 15;
var navWait = new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(waitSeconds))
{
Message = $"The targetURL failed to load in {waitSeconds} seconds"
};
navWait.Until(x => x.FindElementById(targetUrlId) != null || x.FindElementById(forbiddenId) != null);
我看到第二种方法的结果更可靠,但是如果不仔细考虑隐式等待的条件,这意味着更多的代码和可能更脆弱的测试。
这里哪种方法更好,或者有替代方法吗?
【问题讨论】:
标签: angular selenium selenium-webdriver e2e-testing