You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Coded UI Test获取编辑控件的值?含订单号文本框代码咨询

解决Coded UI Test获取指定ID编辑控件值的问题

嘿,我来帮你搞定这个获取订单号的需求!对比你熟悉的Selenium写法,Coded UI Test在控件定位和属性获取上有一些小差异,我给你调整并完善代码,同时讲清楚关键要点:

正确的实现代码

public static string GetOrderNumber()
{
    // 绑定到当前浏览器窗口(如果是已打开的页面,也可以用BrowserWindow.Launch指定URL启动)
    BrowserWindow targetBrowser = BrowserWindow.CurrentWindowHandle != null 
        ? new BrowserWindow() { WindowHandle = BrowserWindow.CurrentWindowHandle }
        : BrowserWindow.Launch(new Uri("你的目标网页URL"));

    // 创建编辑控件实例,指定父控件为浏览器窗口(这一步很重要,缩小搜索范围)
    UITestControl orderNoTextBox = new UITestControl(targetBrowser);
    orderNoTextBox.TechnologyName = "Web";
    // 用官方枚举属性名更规范,避免拼写错误
    orderNoTextBox.SearchProperties.Add(UITestControl.PropertyNames.ControlType, "Edit");
    orderNoTextBox.SearchProperties.Add(UITestControl.PropertyNames.Id, "order_no");

    // 等待控件加载完成,防止未渲染导致的错误
    if (orderNoTextBox.WaitForControlExist(10000)) // 10秒超时
    {
        // Web编辑控件的文本值可能存在于Text或Value属性,做兜底处理
        string orderNumber = orderNoTextBox.GetProperty(UITestControl.PropertyNames.Text)?.ToString() 
                             ?? orderNoTextBox.GetProperty("Value")?.ToString();
        
        return orderNumber;
    }
    else
    {
        throw new Exception("未找到ID为order_no的编辑控件");
    }
}

关键注意点

  • 指定父控件:一定要把编辑控件的父控件设为BrowserWindow,否则Coded UI Test会在整个桌面搜索控件,容易定位失败或找错控件。
  • 属性名的规范用法:用UITestControl.PropertyNames.Id、UITestControl.PropertyNames.ControlType这类枚举值代替字符串,能避免拼写错误,也更符合官方最佳实践。
  • 属性获取的兜底:和Selenium里用getAttribute("value")不同,Coded UI Test中Web编辑控件的输入值可能存在于Text或Value属性中(取决于控件的渲染方式),所以同时尝试两个属性更稳妥。
  • 等待控件加载:添加WaitForControlExist方法确保控件已渲染完成,避免因页面加载延迟导致的控件未找到异常。

内容的提问来源于stack exchange,提问作者Abraham Dlamini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:15:56