Winforms 编码的UI测试回放。正在选择和使用错误的控件

Winforms 编码的UI测试回放。正在选择和使用错误的控件,winforms,coded-ui-tests,cuite,Winforms,Coded Ui Tests,Cuite,我正试图设计一个简单的编码UI测试来访问以下两个函数。目前,它们是用CUITe框架编写的,但在使用编码的UI代码时,我看到了相同的问题 我有一个测试用例,它首先调用GLJEEnterDescription,然后调用GLJEEnterNotes。当测试运行时,GLJEnterDescription被操作,传入函数的两个字符串都被输入其中。GLJEINTERNOTES中从未输入任何内容。我已经检查并重新检查了控件的属性是否正确 这两个控件之间的唯一区别是GLJEEnterDescription是一个

我正试图设计一个简单的编码UI测试来访问以下两个函数。目前,它们是用CUITe框架编写的,但在使用编码的UI代码时,我看到了相同的问题

我有一个测试用例,它首先调用GLJEEnterDescription,然后调用GLJEEnterNotes。当测试运行时,GLJEnterDescription被操作,传入函数的两个字符串都被输入其中。GLJEINTERNOTES中从未输入任何内容。我已经检查并重新检查了控件的属性是否正确

这两个控件之间的唯一区别是GLJEEnterDescription是一个标准的单行文本框,而GLJEEnterNotes是一个自定义(源自标准)多行文本框。有没有想过为什么我不能访问和使用GLJEEnterNotes文本框,但不能访问和使用GLJEEnterDescription文本框?下面是从编码的UI测试调用的函数:

 public void GLJEEnterDescription(string JEDescription)
 {
    akwindow.Find<WinEdit>(By.ControlName("txtJEDescription")).Text = JEDescription;
 }

 public void GLJEEnterNotes(string JENotes)
 {
    akwindow.Find<WinEdit>(By.ControlName("txtMultiJENotes")).Text = JENotes;
 }
public void GLJEnterDescription(字符串JEDescription)
{
akwindow.Find(By.ControlName(“txtJEDescription”)).Text=JEDescription;
}
公共无效GLJEEnterNotes(字符串JENotes)
{
akwindow.Find(By.ControlName(“txtMultiJENotes”)).Text=JENotes;
}

您很可能需要为这些控件指定更多搜索条件

理想情况下,我建议您尝试对控件使用控件ID,甚至AutomationID。这些是搜索算法的最高优先级 像在邮局一样


否则,您可能需要使用并循环使用每个控件以获得所需的正确内容。

当您说“自定义”文本框时,您的意思是说它是内置在VS IDE中的多行文本框,还是这是您或其他公司制作的控件?就像一个用户控件。嘿,布莱恩,谢谢你的回复。这是一个多行文本框,但它是由一家公司创建的,不知道为什么,因为似乎没有任何额外的功能。当我查看设计器文件时,我看到以下内容:internal CustomControls.CompanyNameTextboxMultiLine txtMultiJENotes;是否确定在代码执行时将焦点切换到第二个文本框(GLJEEnterNotes)?意思是,你的代码看到第二个文本框了吗?谢谢大家的回复。奇怪的是,当控件有一个实际的“Name”属性(它似乎引用了.Text属性中的一个值)时,Name属性工作正常。但是,如果我必须像上面的代码那样依赖ControlName,它很少找到控件。我的所有控件ID似乎都是0。该值设置在哪里?我创建了一个简单的winform应用程序,向其中添加了一个textbox控件,但没有看到与控件ID相等的属性?自动化ID不可用,因为这是winforms应用程序,不实现WPF控件。
var textBox = new WinEdit(yourAppWindow);
textBox.SearchProperties.Add(WinEdit.PropertyNames.Name, "txtMultiJENotes");
textBox.SearchProperties.Add(WinEdit.PropertyNames.LineCount, "1");