Atata – 是否有等同于 Wait.Until 的功能?

Atata – Is there any functionality equivalent to Wait.Until?

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

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

给定 Selenium wait.until 方法,在 Atata 框架中是否有任何等效的功能?

我看到 waiting 有很多属性,例如 UntilWaitForWaitForElement,但这些都是针对简单场景的。对于更复杂的规则,我需要类似的功能。如何使用 Atata 实现?

您可以为此使用组件的 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 类其他方法。对于否定检查,只需在 "Should" 之后添加 "Not":Should.Not.*。还有Should.Satisfy()自定义条件的方法。