Atata - 是否有与Wait.Until等效的功能?

时间:2018-02-15 16:40:30

标签: c# selenium automated-tests atata

在我正在使用的场景中,需要等到预期的条件(如值),值具有预期的文本或状态,或者直到更复杂的规则有效,例如:

Wait.Until(x => x.UserName.Value.Get() != string.Empty)

鉴于Selenium wait.until方法,Atata框架中是否有任何等效功能?

我发现waiting有很多属性,例如UntilWaitForWaitForElement,但这些属性适用于简单的场景。我需要类似的功能来处理更复杂的规则。如何使用Atata实现这一目标?

1 个答案:

答案 0 :(得分:2)

您可以使用组件的Should.*扩展方法。

page.SomeSpan.Should.Equal("smth"); // Checks for text in some <span> element.

默认情况下,重试最多可能需要5秒,直到条件执行为止,即使在验证开始时控件的元素不存在也是如此。只有在时间结束且不满足条件后才会抛出异常。

page.SomeSpan.Should.Within(30).StartWith("smth"); // Wait for condition within 30 seconds.
page.SomeSpan.Should.AtOnce.Contain("smth"); // Without retries, quickly checks and throws if condition doesn't match.
page.SomeSpan.Should.Not.BeNullOrEmpty(); // Wait for any value in <span>.

您还可以使用Should扩展方法来控制列表和数据属性:

page.SomeTable.Rows.Should.Not.BeEmpty();
page.SomeTable.Rows.Count.Should.BeGreaterOrEqual(1);

依此类推......您可以查看Atata.IDataVerificationProviderExtensionsAtata.IUIComponentVerificationProviderExtensions类以了解其他方法。对于否定性检查,只需添加&#34; Not&#34;在&#34;应该&#34;:Should.Not.*。自定义条件还有Should.Satisfy()方法。