2012-08-01 48 views
1

Finder属性参数是否有效,即它可以实际使用吗?,我得到此编译器错误“'Finder'不是有效的命名属性参数,因为它不是有效的属性参数类型”每当我尝试使用它,例如Selenium FindsBy属性抛出编译器错误

[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节)。 上述类型的一维数组。

据我所知由于没有上述类型,所以我得到的编译器错误或我错了吗?有

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

是任何其他方式,我可以做到这一点:

我所试图做的就是一个文本框的CKEditor像一个页面对象的WebElement财产?感谢您的帮助

回答

4

这是.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; } 
+0

谢谢对于你的帮助和抱歉的多个帖子,会upvote,但我不能,这些链接也有助于回答我的问题[链接](http://stackoverflow.com/questions/9357223/ckeditor-selenium-webdriver-not -work-with-firefox-9-10-)JavaScript解决方法和[链接](http://code.google.com/p/selenium/issues/detail?id=3890) – Mayoweezy 2012-08-02 12:18:26