您正在使用 WebDriver(从您之前的 Selenium 问题中得到),因此您看到的代码不正确。selenium.waitForCondition
是旧的 v1 代码。您正在使用漂亮的新闪亮 v2 代码。
您需要的是位于命名空间中的WebDriverWaitOpenQA.Selenium.Support
类。
var driver = new FirefoxDriver();
var waitableDriver = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
var element = waitableDriver.Until(d => d.FindElement(By.Id("something")));
这将等到它找到某个元素。但是,它允许您指定 any Func<T, TResult>
,因此它提供了很大的灵活性空间。您可以在 C# 中利用 lambda 的强大功能。
如果您想等待一个元素对用户可见并在其中包含一个值怎么办?如果登录时有一条消息在 5 秒后弹出怎么办?都是可行的。
此外,还有一些方便的“预期条件”已经准备好供您使用,这些是人们可能需要“等待”特定条件为真的常见情况,例如,普通人需要等到元素不仅在页面中呈现,而且对用户实际可见。有一个ElementIsVisible
预期的条件供您使用,因此您不必手动编写逻辑。
这整个概念在 Selenium 世界中被称为显式等待,对于自动化 AJAX 化应用程序的测试至关重要。