0

我想从

public class Class1 : BrowserWindow

我正在尝试Class1通过UiBrowserWindow. UiBrowserWindow像这样的东西...

public class UiBrowserWindow : Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow {
    public static UiBrowserWindow Convert(Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow browserWindow) {
        UiBrowserWindow result = new UiBrowserWindow();
        result = (UiBrowserWindow)browserWindow;
        return result;
    }
}

UiBrowserWindow browserWindow = UiBrowserWindow.Convert(UIMap.Class1.GetType().BaseType);
//UIMap.Class1 is a property of UIMap

此代码产生错误Argument type 'System.Type' is not assignable to parameter type 'Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow'

更新代码:

public class UiBrowserWindow : Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow {
    public static UiBrowserWindow convert(Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow browserWindow) {
        UiBrowserWindow result = (UiBrowserWindow)browserWindow;
        return result;
    }
}

// Usage...
UiBrowserWindow browserWindow = UiBrowserWindow.convert(UIMap.Class1);

这导致异常InvalidCastException: Unable to cast object of type 'automatedTesting.Class1' to type 'UiBrowserWindow'

测试方法...

[TestMethod]
public void CodedUITestMethod1() {
    this.UIMap.RecordedMethod1();

    UiBrowserWindow browserWindow = UiBrowserWindow.convert(UIMap.Class1);
    Assert.IsNotNull(browserWindow.getUiTestControl<HtmlDiv>(new[] { 
        new PropertyExpression(HtmlDiv.PropertyNames.Id, "logo")
    }));
}
4

1 回答 1

2

我想你应该省略 ".GetType().BaseType" 部分并调用:

UiBrowserWindow browserWindow = UiBrowserWindow.Convert(UIMap.Class1);

更新:Class1 派生自 BrowserWindow,UiBrowserWindow 派生自 BrowserWindow。Class1 不是 UiBrowserWindow。您尝试的转换仅适用于重载强制转换运算符(但我不推荐它)。解释你想要达到的目标,因为这种方式行不通

于 2012-05-30T17:42:06.523 回答