Standard Windows code samples (.NET SDK)

End-to-End: Select an item in a combo box

The following example uses standard Windows objects, such as, IWindow, IMenu and IComboBox and their respective properties to select a font type in a combo box.

// The example below uses standard Windows objects, such as, IWindow, IMenu and IComboBox 
// and their respective properties, to select a font type in a combo box.

[Test]
public void TestComboBox()
{
            
	// Following is the program flow: 
	// 1. Launch notepad.
	// 2. Open the Format > Font menu item.
	// 3. Select "Arial" from the Font combobox.
	// 4. Use the Verify statement to verify that "Arial" is the selected font in the combobox.
            
	Process appProcess = new Process { StartInfo = { FileName = @"C:\Windows\System32\notepad.exe" } };
	appProcess.Start();
            
	// Pause to ensure Notepad has fully opened on the computer. 
	Thread.Sleep(4 * 1000); 

	// Locate the Notepad window and assign it to an IWindow object.
	IWindow notepadWindow = Desktop.Describe<IWindow>(new WindowDescription
	{
		WindowClassRegExp = "Notepad",
		WindowTitleRegExp = " Notepad"
	});

	// Locate the Notepad menu and assign it to an IMenu object.
	IMenu notepadMenu = notepadWindow.Describe<IMenu>(new MenuDescription(MenuType.Menu));

	// Build the path for the Font menu item. (The second item in the Format menu in Notepad)
	var path = notepadMenu.BuildMenuPath("Format", 2);

	// Use the path to retrieve the actual Font menu item object. 
	var menuItem = notepadMenu.GetItem(path);

	//Open the Font dialog using the font menu item. 
	notepadMenu.Select(menuItem); 

	// Locate the Font dialog box and assign it to an IDialog object.
	IDialog notepadFontDialog = notepadWindow.Describe<IDialog>(new DialogDescription
	{
		WindowTitleRegExp = "Font"
	});

	// Locate the Font combobox in the Font dialog box and assign it to an IComboBox object. 
	IComboBox fontsComboBox = notepadFontDialog.Describe<IComboBox>(new ComboBoxDescription
	{
		AttachedText = @"&Font:",
		NativeClass = @"ComboBox"
	});
            
	// Select "Arial" font in the combobox
	fontsComboBox.Select("Arial");

	// Get the selected combobox item
	var selectedFont = fontsComboBox.SelectedItem;

	// Verify the selected combobox item is "Arial"
	Verify.AreEqual("Arial", selectedFont, "TestComboBox-Verify-Font", "Verify the selected combobox item is 'Arial'."); 

	// Locate the Cancel button in the dialog box and assign it to an IButton object.
	IButton cancelButton = notepadFontDialog.Describe<IButton>(new ButtonDescription
	{
		Text = @"Cancel",
		NativeClass = @"Button"
	});

	// Clicks "Cancel" in the dialog box.
	cancelButton.Click();

	// Build the path for the Exit menu item. (The seventh item in the File menu in Notepad)
	path = notepadMenu.BuildMenuPath("File", 7);
	menuItem = notepadMenu.GetItem(path);

	// Exits and closes Notepad. 
	notepadMenu.Select(menuItem); 
}

Back to top

End-to-End: Locate a button using Visual Relation Identification (VRI)

The following example uses Visual Relation Identification (VRI) to locate and click buttons in the standard Windows calculator.

// The example below uses Visual Relation Identification (VRI) 
// to locate and click buttons in the standard Windows calculator. 

[Test]
public void TestCalcButtonsUsingVri()
{
           
	/* Following is the program flow: 
	               1. Launch calculator.
	               2. Locate buttons number 2 and 4 using their WindowId.
	               3. Locate button number 1 using VRI, specifying the location of 
	                  button number 1 in relation to buttons number 2 and 4. 
	               4. Click button number 1.
	               5. Verify "1" is printed in the calculator's static text control.
	            */

	Process appProcess = new Process { StartInfo = { FileName = @"C:\Windows\System32\calc.exe" } };
	appProcess.Start();
            
	//Pause to ensure Calculator has fully opened on the computer. 
	Thread.Sleep(4 * 1000);

	//Create the WindowDescription object for the IWindow
	var calculatorDescription = new WindowDescription
	{
		WindowClassRegExp = "CalcFrame",
		WindowTitleRegExp = "Calculator"
	};
            
	// Locate the Calculator window and assign it to an IWindow object.
	IWindow calculator = Desktop.Describe<IWindow>(calculatorDescription);

	// Locate buttons number 2 and 4 in the calculator.
	var button2 =
		calculator.Describe<IButton>(new ButtonDescription { WindowId = 132, NativeClass = "Button" });
	var button4 =
		calculator.Describe<IButton>(new ButtonDescription { WindowId = 134, NativeClass = "Button" });

	// Locate button number 1 in the calculator based on the location of buttons number 2 and 4. 
	var button1 = calculator.Describe<IButton>(
	new ButtonDescription
	{
		NativeClass = "Button",
		Vri = 
		{
			new VisualRelation
			{
				// Button number 2 is to the right of button number 1.
				TestObject = button2,
				HorizontalRelation = HorizontalVisualRelation.Right,
			},
			new VisualRelation
			{
				// Button number 4 is above the button number 1. 
				TestObject = button4,
				VerticalRelation = VerticalVisualRelation.Above,
			}
		}
	});

	// Click button number 1. 
	button1.Click();

	// Locate the calculator's output screen. 
	var textBox = calculator.Describe<IStatic>(
	new StaticDescription { WindowId = 150, NativeClass = "Static" });

	var visibleText = textBox.GetVisibleText();
            
	// Ensure that number "1" appears on the calculator's output screen. 
	Verify.AreEqual("1", visibleText, "TestCalcButtonsUsingVri", "Verify that the number '1' appears on the calculator's output screen.");

	// Exit and close the calculator.
	appProcess.Kill();
}

Back to top