在我正在使用的场景中,需要等到预期的条件(如值),值具有预期的文本或状态,或者直到更复杂的规则有效,例如:
Wait.Until(x => x.UserName.Value.Get() != string.Empty)
鉴于Selenium wait.until
方法,Atata框架中是否有任何等效功能?
我发现waiting有很多属性,例如Until
,WaitFor
,WaitForElement
,但这些属性适用于简单的场景。我需要类似的功能来处理更复杂的规则。如何使用Atata实现这一目标?
答案 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.IDataVerificationProviderExtensions
和Atata.IUIComponentVerificationProviderExtensions
类以了解其他方法。对于否定性检查,只需添加&#34; Not&#34;在&#34;应该&#34;:Should.Not.*
。自定义条件还有Should.Satisfy()
方法。