我有外部功能:
public int SetHeight(IWebElement column)
{
ExtendedElement.Get(column).Click();
}
column
它在调用中ExtendedElement
收到的参数已经是具体类型,但是由于它接受任何IWebElement
我需要的Get
方法。
这是ExtendedElement
重要的部分:
public class ExtendedElement : IWebElement
{
private IWebElement _Element { get; set; }
private ExtendedElement() {}
public static ExtendedElement Get(IWebElement element)
{
return new ExtendedElement()
{
_Element = (RemoteWebElement)element
};
}
public static explicit operator RemoteWebElement(ExtendedElement element)
{
return (RemoteWebElement)element._Element;
}
// other impmlementations
}
如何编写我从Microsoft读取的转换
出于某种原因,运行代码时出现异常: System.InvalidCastException : Unable to cast object of type 'Core.Helper.ExtendedElement' to type 'OpenQA.Selenium.Remote.RemoteWebElement'.
那为什么呢?如果我过于复杂,需要更改设计,那么目标是什么?
要实现保留其原始方法的自定义Web元素,请扩展RemoteWebElement
:
public class ExtendedElement : RemoteWebElement
{
public static ExtendedElement Get(IWebElement element)
{
RemoteWebDriver driver = (RemoteWebDriver)element.WrappedDriver;
string id = (string)typeof(RemoteWebElement)
.GetProperty("Id", BindingFlags.NonPublic | BindingFlags.Instance)
.GetValue(element, null);
return new ExtendedElement(driver, id);
}
public ExtendedElement(RemoteWebDriver driver, string id)
: base(driver, id)
{ }
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句