wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName(className)) 不返回任何元素

Pol*_* F. 4 selenium webdriver selenium-chromedriver selenium-webdriver

我需要使用WebDriverWait找到IReadOnlyCollection<IWebElement>以确保元素已呈现在页面上。

这是我的代码

 WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeout));
 return wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName("TextInput")));
Run Code Online (Sandbox Code Playgroud)

此代码超时失败。这意味着在给定类名的页面上找不到任何元素。我原始代码之前添加了这行代码只是为了确保元素存在

 var allInputs1 = container.FindElements(By.ClassName("textInput"));
Run Code Online (Sandbox Code Playgroud)

该行按预期返回元素。

所以我的结论是 wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName("TextInput"))) 它没有按预期工作,因为它无法找到页面上肯定存在的元素。

使用WebDriverWait查找元素数组的最佳方法是什么?

Wür*_*paß 5

你的结论是错误的。与FindElements您一起确保元素存在。

状态的 API 文档VisibilityOfAllElementsLocatedBy

期望检查网页上与定位器匹配的所有元素是否可见。可见性意味着元素不仅被显示,而且具有大于 0 的高度和宽度。

而且显然现在是不可见的

我觉得你应该试试 ExpectedConditions.PresenceOfAllElementsLocatedBy