3

在 java 中,我使用这样的代码来获取具有相同标识符的 WebElements 列表:

@FindBy(how = How.CLASS_NAME, using = "name")
private List<WebElement> names;

现在,我正在使用 c#,我正在尝试使用以下方法做同样的事情:

[FindsBy(How = How.ClassName, Using = "name")]
private List<IWebElement> names;

但是,这给出了例外:

System.ArgumentException:“Castle.Proxies.IWrapsElementProxy_1”类型的对象无法转换为“System.Collections.Generic.List`1[OpenQA.Selenium.IWebElement]”类型。

我已经尝试过 FindAllBy 和 FindBys,但是这些似乎无效。反正我能做到这一点吗

names = getDriver().findElements(By.ClassNames("..."))?

4

2 回答 2

13

从 .NET 绑定的 2.29.0 开始,这不再是 true。该FindsBy属性现在将找到单个元素或元素集合。请注意,由属性修饰的集合字段或FindsBy属性必须是类型IWebElementIList<IWebElement>才能由PageFactory. 任何其他类型都会抛出异常。

于 2012-09-26T00:54:07.363 回答
1

试试[FindAllBy(How = How.ClassName, Using = "name")]吧。

于 2012-09-25T23:26:29.383 回答