我为Angular 4 / ASP.NET Core Web API应用程序进行了E2E测试(使用Selenium WebDriver)。
我在某些测试中偶尔会遇到超时/等待问题。
E2E框架有一个方法WaitForAngular(),它使用一些Javascript(取自Protractor)等待Angular指示它在继续之前已经加载了所有'testabilities'(参见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);
我从第二种方法看到了更强大的结果,但如果不仔细考虑隐式等待的条件,则意味着更多的代码和可能更脆弱的测试。
这是哪种方法更好,还是有替代方案?
答案 0 :(得分:0)
您使用的是哪个版本的Angular?
如果您只需要等待渲染元素,您可以尝试:
ssize_t __vfs_read(struct file *file, char __user *buf, size_t count,
loff_t *pos)
{
if (file->f_op->read)
return file->f_op->read(file, buf, count, pos);
else if (file->f_op->read_iter)
return new_sync_read(file, buf, count, pos);
else
return -EINVAL;
}