Working With Drop-Down Lists in Desktop Windows Applications

Applies to TestComplete 15.40, last modified on July 05, 2022

Note: To learn how to simulate user actions over combo box controls in web applications, see Working With Combo Box Controls in Web Applications.

While testing combo box controls, you can use specific properties and methods of the corresponding program object to perform certain actions and obtain data stored in controls. You can call these methods and properties from your keyword tests, as well as from scripts. This topic describes how to work with the needed properties and methods from your scripts. However, when testing a control from your keyword test, you can use the same methods and properties calling them from keyword test operations. For more information, see Keyword Tests Basic Operations.

When testing a combo box control, you may need to work with its drop-down list. The Win32ComboBox object provides a set of specific properties and methods that you can use to perform certain actions over a drop-down list.

Before selecting an item in a drop-down list, you should open it. Thus, you may need to determine whether the drop-down list is open. Also, you may want your test to perform some actions depending on the state of the drop-down list. You can check the drop-down list's state via the wIsDropDownListOpened property that returns True if the drop-down list is open; otherwise, it returns False.

Note: wIsDropDownListOpened is always True if the tested combo box control is simple.

To open a drop-down list, you can either use the DropDown action provided by the Win32ComboBox object, or simulate keyboard shortcuts. Before opening a drop-down list by simulating keystrokes, you need to determine the interface mode of the combo box. You can determine the interface mode via the wExtendedUI property, which returns True if the tested control uses an extended user interface; otherwise, it returns False.

If the combo box uses a standard user interface, the F4 or Alt+Down shortcut opens or closes the list. If the combo box uses an extended user interface, the drop-down list is opened by pressing the Down key. You can close the drop-down list via the CloseUp action or by simulating the Enter or Esc key press.

After opening the drop-down list, you can navigate within it using the keyboard. You can simulate the Up and Down keystrokes that change the current selection in the list. For more information on how to simulate keystrokes, see Simulating Keystrokes.

The following example demonstrates how to work with a combo box's drop-down list.

JavaScript, JScript

function Main()
{
var p, w, ComboBox;

  // Run Notepad
  WshShell.Run("notepad.exe", SW_SHOWNORMAL);

  // Obtain a combo box object
  p = Sys.Process("NOTEPAD");
  Sys.Keys("~fo");
  w = p.Window("#32770", "Open", 1);
  ComboBox = w.Window("ComboBoxEx32", "", 1).Window("ComboBox", "", 1);
  
  // Determine the interface mode
  if (ComboBox.wExtendedUI)
    Log.Message("Extended")
  else
    Log.Message("Default");
  
  // Open the drop-down list if it is closed
  if (ComboBox.wIsDropDownListOpened == 0)
    ComboBox.DropDown();
  
  // Select an item and post it to log
  ComboBox.Keys("[Down][Down][Down]");
  ComboBox.CloseUp();
  
  // Post the index of the selected item to the log
  Log.Message(ComboBox.wSelectedItem);
}

Python

def Main():

  # Run Notepad
  WshShell.Run("notepad.exe", SW_SHOWNORMAL)

  # Obtain a combo box object 
  p = Sys.Process("NOTEPAD")
  Sys.Keys("~fo")
  w = p.Window("#32770", "Open", 1)
  ComboBox = w.Window("ComboBoxEx32", "", 1).Window("ComboBox", "", 1)
  
  # Determine the interface mode
  if (ComboBox.wExtendedUI):
    Log.Message("Extended")
  else:
    Log.Message("Default")
  
  # Open the drop-down list if it is closed 
  if (ComboBox.wIsDropDownListOpened == 0):
    ComboBox.DropDown()
  
  # Select an item and post it to log
  ComboBox.Keys("[Down][Down][Down]")
  ComboBox.CloseUp()
  
  # Post the index of the selected item to the log
  Log.Message(ComboBox.wSelectedItem)

VBScript

Sub Main
Dim p, w, ComboBox

  ' Run Notepad
  Call WshShell.Run("notepad.exe", SW_SHOWNORMAL)
  
  ' Obtain a combo box object
  Set p = Sys.Process("NOTEPAD")
  Sys.Keys "~fo"
  Set w = p.Window("#32770", "Open", 1)
  Set ComboBox = w.Window("ComboBoxEx32", "", 1).Window("ComboBox", "", 1)
  
  ' Determine the interface mode
  If (ComboBox.wExtendedUI = true) Then
    Log.Message("Extended")
  Else
    Log.Message("Default")
  End If
  
  ' Open the drop-down list if it is closed
  If ComboBox.wIsDropDownListOpened = 0 Then
    ComboBox.DropDown
  End If
  
  ' Select an item and post it to log
  ComboBox.Keys "[Down][Down][Down]"
  ComboBox.CloseUp
  
  ' Post the index of the selected item to the log
  Log.Message(ComboBox.wSelectedItem)
End Sub

DelphiScript

procedure Main();
var
p, w, ComboBox: OleVariant;
begin
  // Run Notepad
  WshShell.Run('notepad.exe', SW_SHOWNORMAL);
  
  // Obtain a combo box object
  p := Sys.Process('NOTEPAD');
  Sys.Keys('~fo');
  w := p.Window('#32770', 'Open', 1);
  ComboBox := w.Window('ComboBoxEx32', '', 1).Window('ComboBox', '', 1);
  
  // Determine the interface mode
  if (ComboBox.wExtendedUI)
  then
    Log.Message('Extended')
  else
    Log.Message('Default');
  
  // Open the drop-down list if it is closed
  if (ComboBox.wIsDropDownListOpened = 0)
  then
    ComboBox.DropDown();
  
  // Select an item and post it to log
  ComboBox.Keys('[Down][Down][Down]');
  ComboBox.CloseUp();
  
  // Post the index of the selected item to the log
  Log.Message(ComboBox.wSelectedItem);
end;

C++Script, C#Script

function Main()
{
var p, w, ComboBox;

  // Run Notepad
  WshShell["Run"]("notepad.exe", SW_SHOWNORMAL);
  
  // Obtain a combo box object
  p = Sys["Process"]("NOTEPAD");
  Sys.Keys("~fo");
  w = p.Window("#32770", "Open", 1);
  ComboBox = w["Window"]("ComboBoxEx32", "", 1).Window("ComboBox", "", 1);
    
  // Determine the interface mode
  if (ComboBox["wExtendedUI"])
    Log["Message"]("Extended")
  else 
    Log["Message"]("Default");

  // Open the drop-down list if it is closed
  if (ComboBox["wIsDropDownListOpened"] == 0)
    ComboBox["DropDown"]();
  
  // Select an item and post it to log
  ComboBox["Keys"]("[Down][Down][Down]");
  ComboBox["CloseUp"]();
  
  // Post the index of the selected item to the log
  Log["Message"](ComboBox["wSelectedItem"]);
}

See Also

Working With Combo Box Controls in Desktop Windows Applications
wIsDropDownListOpened Property (Combo Box Controls)
wExtendedUI Property (Combo Box Controls)
DropDown Action (Combo Box Controls)
CloseUp Action (Combo Box Controls)
Simulating Keystrokes
Combo Box Types in Desktop Windows Applications
Working With Combo Box Controls in Web Applications

Highlight search results