我需要使用 WebDriverWait 找到 IReadOnlyCollection< IWebElement> ,以确保元素已在页面上呈现。
这是我的代码
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeout));
return wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName("TextInput")));
此代码在超时时失败。 意味着在页面上找不到具有给定类名的任何元素。 我添加了这行代码 BEFORE 我的原始代码只是为了确保元素存在
var allInputs1 = container.FindElements(By.ClassName("textInput"));
该行按预期返回元素。
所以我的结论就是这样
wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName("TextInput")))
没有按预期工作,因为找不到肯定存在于页面上的元素。
使用 WebDriverWait 查找元素数组的最佳方法是什么?
答案 0 :(得分:4)
你的结论是错误的。使用FindElements
,您只需确保元素存在。
VisibilityOfAllElementsLocatedBy
州的API文档:
期望检查网页上的所有元素 匹配定位器是可见的。可见性意味着元素 不仅显示,而且还有高度和宽度 大于0。
显然现在不是可见。
我认为你应该尝试ExpectedConditions.PresenceOfAllElementsLocatedBy