Finder属性参数是否有效(即可以实际使用?),每次尝试使用它时,都会收到此编译器错误“'Finder'不是有效的命名属性参数,因为它不是有效的属性参数类型”。

[FindsBy(Finder = By.Id("test").FindElement(By.TagName("iframe")))]
public IWebElement Test{ get; set; }


有没有人得到使用Finder属性参数的有效示例,或者这是一个错误?

看代码:
http://code.google.com/p/selenium/source/browse/trunk/dotnet/src/WebDriver.Support/PageObjects/FindsByAttribute.cs?r=17167#

同样从http://msdn.microsoft.com/en-us/library/aa664615%28VS.71%29.aspx出发,属性类的位置和命名参数的类型限于属性参数类型,它们是:

以下类型之一:bool,byte,char,double,float,int,long,short,string。
类型对象。
类型System.Type。
枚举类型,只要它具有公共可访问性,并且嵌套的类型(如果有)也具有公共可访问性(第17.2节)。
上述类型的一维数组。

据我所知,上述类型都不是By,所以我得到编译器错误还是我错了?

我想做的是获取ckeditor文本框作为页面对象的WebElement属性,例如:

[FindsBy(Finder = By.Id("cke_Details").FindElement(By.TagName("iframe")))]
public IWebElement Details { get; set; }


我还有其他方法可以实现这一目标吗?谢谢你的帮助

最佳答案

这是.NET FindsByAttribute实现中的错误。您不应尝试使用Finder属性。它根本不起作用。请改用以下内容:

// WARNING: Completely untested code here. Not guaranteed to
// work correctly, or even to compile.
[FindsBy(How = How.Id, Using = "test")]
public IWebElement Test { get; set; }


如果您需要更复杂的东西,例如问题中提到的分层查找路径,则可以使用XPath或CSS选择器查找,如下所示:

// WARNING: Completely untested code here. Not guaranteed to
// work correctly, or even to compile.
[FindsBy(How = How.XPath, Using = "//*[@id='test']/iframe")]
public IWebElement Test { get; set; }

10-07 19:37
查看更多