C# 扩展selenium2功能PageFactory

C# 扩展selenium2功能PageFactory,c#,reflection,selenium-webdriver,castle-dynamicproxy,C#,Reflection,Selenium Webdriver,Castle Dynamicproxy,我想向selenium2PageFactory添加一项功能。我想要的是FindsByAttribute与SelectedElement兼容。 我发现的问题是,如果我使用SelectElement将属性添加到IWrapsElement中,并在ProxiedWebElementInterceptor中实现它。当调用该字段的方法SetValue时,他说“类型为'Castle.Proxies.InewSwrapElementProxy'的对象不能转换为类型为'OpenQA.Selenium.Suppor

我想向selenium2
PageFactory
添加一项功能。我想要的是
FindsByAttribute
SelectedElement
兼容。 我发现的问题是,如果我使用
SelectElement
将属性添加到
IWrapsElement
中,并在
ProxiedWebElementInterceptor
中实现它。当调用该字段的方法
SetValue
时,他说“类型为'Castle.Proxies.InewSwrapElementProxy'的对象不能转换为类型为'OpenQA.Selenium.Support.UI.SelectElement' 有人能解释castle代理返回所需值的机制吗?

试试这个

// Presumed to be in Page class
[FindsBy(How = How.Id, Using = "ButtonId")]
public IWebElement submitButton { get; set; }

// Presumed to be in Helpers class
public void ScrollToElementOnPage(IWrapsElement element) 
{ 
   var js = driver as IJavaScriptExecutor;
return  js.ExecuteScript("arguments[0].scrollIntoView(true);",element.WrappedElement);
}

Helpers _helpers = new Helpers();
Page _page = new Page();
_helpers.ScrollToElementOnPage((IWrapsElement)_page.submitButton);
试试这个

// Presumed to be in Page class
[FindsBy(How = How.Id, Using = "ButtonId")]
public IWebElement submitButton { get; set; }

// Presumed to be in Helpers class
public void ScrollToElementOnPage(IWrapsElement element) 
{ 
   var js = driver as IJavaScriptExecutor;
return  js.ExecuteScript("arguments[0].scrollIntoView(true);",element.WrappedElement);
}

Helpers _helpers = new Helpers();
Page _page = new Page();
_helpers.ScrollToElementOnPage((IWrapsElement)_page.submitButton);