繁体   English   中英

Selenium FindsBy属性抛出编译器错误

[英]Selenium FindsBy attribute throws compiler error

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; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM