FindBy注释用于查找WebElements列表
在java中,我使用这样的代码来获取具有相同标识符的WebElements列表:
@FindBy(how = How.CLASS_NAME, using = "name") private List names;
现在,我正在使用c#而我正在尝试使用以下方法执行相同的操作:
[FindsBy(How = How.ClassName, Using = "name")] private List names;
但是,这给出了例外:
System.ArgumentException:类型为“Castle.Proxies.IWrapsElementProxy_1”的对象无法转换为类型’System.Collections.Generic.List`1 [OpenQA.Selenium.IWebElement]’。
我已经尝试过FindAllBy和FindBys,但这些似乎没有效果。 无论如何我还能做到这一点
names = getDriver().findElements(By.ClassNames("..."))
?
.NET绑定中没有类似的用于使用PageFactory属性查找元素列表的Java绑定方法。 有几个人在过去的一段时间里尝试过它,但是没有人能够让Castle Windsor代理行为正常。 我知道.NET绑定的维护者会热切地欢迎这个补丁,所以请随意提交。
更新自2.29.0版本的.NET绑定以来, 现在已经不再适用了 。 FindsBy
属性现在将查找单个元素或元素集合。 请注意,由FindsBy
属性修饰的集合字段或属性必须是IWebElement
类型或IList
才能由PageFactory
填充。 任何其他类型都会抛出exception。
请尝试[FindAllBy(How = How.ClassName, Using = "name")]
。