【问题标题】:Coded UI Tests down casting not working编码的 UI 测试向下转换不起作用
【发布时间】:2012-11-24 09:16:43
【问题描述】:

我一直在尝试将泛型引入我们的自动化代码,因此我尝试将 WpfControl 转换为泛型类型 T,其中 T 被限制为 WpfControl 类型。

return control as T;

T 将始终是 WpfControl 的子级,但是当我将 WpfControl 类型的控件转换为泛型类型时,它返回 null。我还尝试将控制权转换为确切的子类型,例如:

var childControl = control as WpfTabList;

这仍然返回null。有人遇到过类似的问题吗?

看到这个WpfControl Class

【问题讨论】:

  • 如果一切都如您所描述,那么它应该工作。我怀疑你缺少一些东西。我可以建议你:a)在调试器中单步执行,看看运行时“控制”的类型是什么,b)发布更完整的代码。
  • 还要检查控件是否为空!以前我就被这发现了。
  • 调用构造函数的行在哪里 - 请添加它。 (control = new ....) 当你找到那条线时,你可能会自己解决它;) (但如果不是 - 我还在这里)
  • 您还应该显示或记录 control.GetType().ToString() 以确保它是您期望的类型...

标签: c# automation coded-ui-tests


【解决方案1】:

一些建议:

首先,在您的泛型方法中,请使用 geteric 类型规范。喜欢

public T GetControl<T>(...) where T : WpfControl

您的假设和实现有误 您正在尝试将WpfControlWpfTabList 匹配,这在子控件不是 TabList 的情况下是错误的。

【讨论】:

    【解决方案2】:

    这绝对有效。我的github 上有一整套这些。

    您能否添加更多代码来显示设置的控件?

    这里有一些摘录来展示这可能是什么样子。

    public static T Find<T>(this UITestControl parent) where T : UITestControl, new()
        {
            return new T() { Container = parent };
        }
    
    public static IEnumerable<T> FindAll<T>(this UITestControl parent) where T : UITestControl, new()
        {
            return parent.Find<T>().FindAllAsType();
        }
    
    private static IEnumerable<T> FindAllAsType<T>(this T current) where T : UITestControl, new()
        {
            if (typeof(T).IsSubclassOf(typeof(HtmlControl)))
            {
                return current.FindMatchingControls().Select(x => new T().ExtendFrom(x));
            }
            return current.FindMatchingControls().OfType<T>();
        }
    
    private static IEnumerable<U> FindAllCastTo<T, U>(this T current) where T : UITestControl
        {
            return current.FindMatchingControls().Cast<U>();
        }
    

    最可能的情况是控件类型不是您尝试将其强制转换为的类型,或者它为空。

    【讨论】:

      猜你喜欢
      • 2013-02-05
      • 1970-01-01
      • 2015-07-08
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多