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

这是我的代码

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

此代码超时失败。
这意味着在给定类名的页面上找不到任何元素。
我在 之前添加了这行代码 我的原始代码只是为了确保元素存在
 var allInputs1 = container.FindElements(By.ClassName("textInput"));

该行按预期返回元素。

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

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

最佳答案

你的结论是错误的。使用 FindElements 您只需确保元素存在。
VisibilityOfAllElementsLocatedBy 的 API 文档指出:



显然现在是不可见的。

我想你应该试试 ExpectedConditions.PresenceOfAllElementsLocatedBy

关于selenium - wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName(className)) 不返回任何元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39575177/

10-11 23:17
查看更多