使用UI Automation实现自动化测试--2
2013-07-15 17:18
363 查看
1. 首先建立一个待测试的winform程序,即UI Automation的服务端。
下面是button事件处理程序。
2. 建立一个测试程序,做UI Automaion的客户端。
添加引用:UIAutomationClient.dll 和 UIAutomationTypes.dll
下面是button事件处理程序。
private void CalculateButton_Click(object sender, EventArgs e) { int num1 = 0; int num2 = 0; if (!int.TryParse(textBox1.Text.Trim(), out num1) || !int.TryParse(textBox2.Text.Trim(), out num2)) { MessageBox.Show("Please input a correct number!"); return; } textBox3.Text = (num1 + num2).ToString(); }
2. 建立一个测试程序,做UI Automaion的客户端。
添加引用:UIAutomationClient.dll 和 UIAutomationTypes.dll
public static void TestWinFrom(int num1, int num2) { string winfromPath = @"C:\Users\v-lix\Documents\Visual Studio 2010\Projects\UIAutomationDemo\WinformForTesting\bin\Debug\WinformForTesting.exe"; Console.WriteLine("Begin WinForm UIAutomation test runn"); Console.WriteLine("Launching WinFormTest application"); Process p = Process.Start(winfromPath); Thread.Sleep(TimeSpan.FromSeconds(2)); Console.WriteLine("Get desktop"); var desktop = AutomationElement.RootElement; // Method 1 by windowhandle AutomationElement testForm = AutomationElement.FromHandle(p.MainWindowHandle); // Method 2 by name property //PropertyCondition proCon = new PropertyCondition(AutomationElement.NameProperty,"TestForm1"); //testForm = desktop.FindFirst(TreeScope.Children,proCon); if (testForm == null) { Console.WriteLine("Could find testform!"); return; } Console.WriteLine("Try to find the button control in testForm"); AutomationElement button = testForm.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "Calculate")); Console.WriteLine("Try to find all the textbox in testform!"); AutomationElementCollection aeAllTextBoxes = testForm.FindAll(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit)); // 控件初始化的顺序是先初始化后添加到控件 // this.Controls.Add(this.textBox3); // this.Controls.Add(this.textBox2); // this.Controls.Add(this.textBox1); AutomationElement aeTextBox1 = aeAllTextBoxes[2]; AutomationElement aeTextBox2 = aeAllTextBoxes[1]; AutomationElement aeTextBox3 = aeAllTextBoxes[0]; Console.WriteLine("Settiing input to '30'"); //set textboxs' value by ValuePattern ValuePattern vpTextBox1 = (ValuePattern)aeTextBox1.GetCurrentPattern(ValuePattern.Pattern); vpTextBox1.SetValue(num1.ToString()); ValuePattern vpTextBox2 = (ValuePattern)aeTextBox2.GetCurrentPattern(ValuePattern.Pattern); vpTextBox2.SetValue(num2.ToString()); Thread.Sleep(150); Console.WriteLine("Clickinig on button1 Button."); InvokePattern ipButton = (InvokePattern)button.GetCurrentPattern(InvokePattern.Pattern); ipButton.Invoke(); Thread.Sleep(1000); ValuePattern vpTextBox3 = (ValuePattern)aeTextBox3.GetCurrentPattern(ValuePattern.Pattern); if (int.Parse(vpTextBox3.Current.Value.Trim()) != (num1 + num2)) { Console.WriteLine("Failed"); } else { Console.WriteLine("Pass"); } Thread.Sleep(5000); //close testform WindowPattern wpCloseForm = (WindowPattern)testForm.GetCurrentPattern(WindowPattern.Pattern); wpCloseForm.Close(); }
相关文章推荐
- 使用 UI Automation 实现自动化测试--2
- 使用UI Automation实现自动化测试--1
- 使用UI Automation实现自动化测试--4.7 (TogglePattern)
- 使用UI Automation实现自动化测试 --微软提供的控件Pattern
- 使用UI Automation实现自动化测试--4.2 (ExpandCollapsePattern)
- 使用 UI Automation 实现自动化测试--3
- 使用UI Automation实现自动化测试--4.6.2 (SelectItemPattern Demo)
- 使用UI Automation实现自动化测试--3
- 使用UI Automation实现自动化测试--4.8 (GridPattern)
- 使用UI Automation实现自动化测试--2
- 使用UI Automation实现自动化测试--1
- 使用UI Automation实现自动化测试--4.9 (ScrollPattern)
- 使用 UI Automation 实现自动化测试--4.1
- 【转】使用UI Automation实现自动化测试-1
- 使用UI Automation实现自动化测试--5 (Winfrom和WPF中弹出和关闭对话框的不同处理方式)
- 使用 UI Automation 实现自动化测试--4.2
- 使用UI Automation实现自动化测试--4.7 (TogglePattern)
- 使用UI Automation实现自动化测试--6 (模拟鼠标在自动化测试中的应用)
- 使用UI Automation实现自动化测试--7.1 (模拟键盘输入数据在自动化测试中的应用)
- 使用UI Automation实现自动化测试--4.4 (ValuePattern)