TestComplete recognizes standard <select>
elements in web applications and on web pages as Web Combo Box
objects. It can also recognize combo box controls implemented with third-party libraries and frameworks.
In your tests, you can work with these elements using methods and properties of the Web Combo Box
object. In addition, you can access attributes of the underlying web element and properties and methods provided to the object by a web browser in which the tested web page or web application is running.
Select items of a combo box
In your tests, you often have to simulate selecting an item of a combo box control on a web page. To do this, you can use the ClickItem
method specifying the item to select by its index or its caption. You can also simulate selecting an item by typing its caption in the combo box and by moving up and down the list of combo box items.
The samples below show how to select a combo box item by using the ClickItem
method, in keyword tests and in script tests respectively.
In keyword tests
-
Add the On-Screen Action operation to your keyword test. TestComplete will show the Operation Parameters wizard.
-
In the wizard, specify the combo box whose item you want to select. You can do it by pointing to the combo box on the web page.
-
Select the combo box object’s method to call. To simulate selecting an item, use the
ClickItem
method. -
Specify either the index of the item to select or its caption.
Note: The index must be zero-based.
-
Click Finish to add the operation and close the wizard.
In script tests
To simulate selecting items of a combo box, use the WebComboBoxObj.ClickItem(Item)
method.
The script sample below shows how to simulate selecting a combo box item on a web page:
Web (Cross-Platform)
JavaScript, JScript
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers.Item(btChrome).Run(url);
var cb = Sys.Browser().Page(url).FindElement("#themeName");
// Select the third item of the Themes combo box
cb.ClickItem(2);
// Select the Flex item of the Themes combo box
cb.ClickItem("Flex");
}
Python
def Sample_SelectItem():
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item[btChrome].Run(url)
cb = Sys.Browser().Page(url).FindElement("#themeName")
# Select the third item of the Themes combo box
cb.ClickItem(2)
# Select the Flex item of the Themes combo box
cb.ClickItem("Flex")
VBScript
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item(btChrome).Run(url)
Set cb = Sys.Browser().Page(url).FindElement("#themeName")
' Select the third item of the Themes combo box
cb.ClickItem(2)
' Select the Flex item of the Themes combo box
cb.ClickItem("Flex")
End Sub
DelphiScript
var url, cb;
begin url := 'https://services.smartbear.com/samples/TestComplete15/smartstore/';
Browsers.Item(btChrome).Run(url);
cb := Sys.Browser().Page(url).FindElement('#themeName');
// Select the third item of the Themes combo box
cb.ClickItem(2);
// Select the Flex item of the Themes combo box
cb.ClickItem('Flex');
end;
C++Script, C#Script
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers["Item"](btChrome)["Run"](url);
var cb = Sys["Browser"]()["Page"](url)["FindElement"]("#themeName");
// Select the third item of the Themes combo box
cb["ClickItem"](2);
// Select the Flex item of the Themes combo box
cb["ClickItem"]("Flex");
}
Web (Classic)
JavaScript, JScript
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers.Item(btChrome).Run(url);
var propNames = new Array("ObjectType", "ObjectIdentifier");
var propValues = new Array("Select", "themeName");
var cb = Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, true);
// Select the third item of the Themes combo box
cb.ClickItem(2);
// Select the Flex item of the Themes combo box
cb.ClickItem("Flex");
}
Python
def Sample_SelectItem():
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item[btChrome].Run(url)
propNames = ["ObjectType", "ObjectIdentifier"]
propValues = ["Select", "themeName"]
cb = Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, True)
# Select the third item of the Themes combo box
cb.ClickItem(2)
# Select the Flex item of the Themes combo box
cb.ClickItem("Flex")
VBScript
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item(btChrome).Run(url)
propNames = Array("ObjectType", "ObjectIdentifier")
propValues = Array("Select", "themeName")
Set cb = Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, True)
' Select the third item of the Themes combo box
cb.ClickItem(2)
' Select the Flex item of the Themes combo box
cb.ClickItem("Flex")
End Sub
DelphiScript
var url, propNames, propValues, cb;
begin url := 'https://services.smartbear.com/samples/TestComplete15/smartstore/';
Browsers.Item(btChrome).Run(url);
propNames := ['ObjectType', 'ObjectIdentifier'];
propValues := ['Select', 'themeName'];
cb := Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, true);
// Select the third item of the Themes combo box
cb.ClickItem(2);
// Select the Flex item of the Themes combo box
cb.ClickItem('Flex');
end;
C++Script, C#Script
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers["Item"](btChrome)["Run"](url);
var propNames = new Array("ObjectType", "ObjectIdentifier");
var propValues = new Array("Select", "themeName");
var cb = Sys["Browser"]()["Page"](url)["FindChildEx"](propNames, propValues, 15, true);
// Select the third item of the Themes combo box
cb["ClickItem"](2);
// Select the Flex item of the Themes combo box
cb["ClickItem"]("Flex");
}
Get number of combo box items
In your tests, you may need to get the number of items a combo box contains. To do this, you can use the wItemCount
property of the Web Combo Box
object.
To compare the number of items against an expected value, you can add a property checkpoint to your test. You can also store the number of items to a variable for future use.
The samples below show how to get the number of combo box items and store it to a variable, in keyword tests and in script tests respectively.
In keyword tests
To get the number of items and store it to a variable, you can use the Set Variable Value operation. For example:
-
Create a variable that will store the number of items. It can be either a keyword variable or a project or project suite variable.
-
In your keyword test, add the Set Variable Value operation. TestComplete will open the Operation Parameter wizard.
-
On the first page of the wizard, select the created variable.
-
On the next page of the wizard, in the Mode drop-down list, select Object Property, and then click the ellipsis button in the Value edit box.
-
In the resulting dialog, click Onscreen Object and then point to the combo box control on the web page.
-
On the next page of the wizard, select the
wItemCount
property. -
Click Finish to complete adding the operation.
In script tests
To get the number of combo box items, use the WebComobBoxObj.wItemCount
property. For example, the sample script below shows how to get the number of items and post it to the test log:
Web (Cross-Platform)
JavaScript, JScript
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers.Item(btChrome).Run(url);
var cb = Sys.Browser().Page(url).FindElement("#themeName");
// Post the number of combo box items to the test log
Log.Message(aqString.Format("The total number of Themes combo box items: %i", cb.wItemCount));
}
Python
def Sample_GetItemCount():
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item[btChrome].Run(url)
cb = Sys.Browser().Page(url).FindElement("#themeName")
# Post the number of combo box items to the test log
Log.Message(aqString.Format("The total number of Themes combo box items: %i", cb.wItemCount))
VBScript
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item(btChrome).Run(url)
Set cb = Sys.Browser().Page(url).FindElement("#themeName")
' Post the number of combo box items to the test log
Log.Message(aqString.Format("The total number of Themes combo box items: %i", cb.wItemCount))
End Sub
DelphiScript
var url, cb;
begin url := 'https://services.smartbear.com/samples/TestComplete15/smartstore/';
Browsers.Item(btChrome).Run(url);
cb := Sys.Browser().Page(url).FindElement('#themeName');
// Post the number of combo box items to the test log
Log.Message(aqString.Format('The total number of Themes combo box items: %i', cb.wItemCount));
end;
C++Script, C#Script
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers["Item"](btChrome)["Run"](url);
var cb = Sys["Browser"]()["Page"](url)["FindElement"]("#themeName");
// Post the number of combo box items to the test log
Log["Message"](aqString["Format"]("The total number of Themes combo box items: %i", cb["wItemCount"]));
}
Web (Classic)
JavaScript, JScript
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers.Item(btChrome).Run(url);
var propNames = new Array("ObjectType", "ObjectIdentifier");
var propValues = new Array("Select", "themeName");
var cb = Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, true);
// Post the number of combo box items to the test log
Log.Message(aqString.Format("The total number of Themes combo box items: %i", cb.wItemCount));
}
Python
def Sample_GetItemCount():
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item[btChrome].Run(url)
propNames = ["ObjectType", "ObjectIdentifier"]
propValues = ["Select", "themeName"]
cb = Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, True)
# Post the number of combo box items to the test log
Log.Message(aqString.Format("The total number of Themes combo box items: %i", cb.wItemCount))
VBScript
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item(btChrome).Run(url)
propNames = Array("ObjectType", "ObjectIdentifier")
propValues = Array("Select", "themeName")
Set cb = Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, True)
' Post the number of combo box items to the test log
Log.Message(aqString.Format("The total number of Themes combo box items: %i", cb.wItemCount))
End Sub
DelphiScript
var url, propNames, propValues, cb;
begin url := 'https://services.smartbear.com/samples/TestComplete15/smartstore/';
Browsers.Item(btChrome).Run(url);
propNames := ['ObjectType', 'ObjectIdentifier'];
propValues := ['Select', 'themeName'];
cb := Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, true);
// Post the number of combo box items to the test log
Log.Message(aqString.Format('The total number of Themes combo box items: %i', cb.wItemCount));
end;
C++Script, C#Script
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers["Item"](btChrome)["Run"](url);
var propNames = new Array("ObjectType", "ObjectIdentifier");
var propValues = new Array("Select", "themeName");
var cb = Sys["Browser"]()["Page"](url)["FindChildEx"](propNames, propValues, 15, true);
// Post the number of combo box items to the test log
Log["Message"](aqString["Format"]("The total number of Themes combo box items: %i", cb["wItemCount"]));
}
Get combo box items
To get individual items of a combo box, you can use the following properties:
-
Use the
wItem
property to get the caption of the item specified by its index. -
Use the
wText
property and the wSelectedItem property to get the caption and the index of the item that is currently selected in the combo box.
To compare obtained values against an expected value, you can use property checkpoints. You can also store the obtained items to a variable for later use.
The samples below show how to get the caption of the first item of a combo box and store it to a variable, in keyword tests and in script tests respectively.
In keyword tests
-
Create a variable that will store the caption. It can be either a keyword variable or a project or project suite variable.
-
In your keyword test, add the Set Variable Value operation. TestComplete will open the Operation Parameter wizard.
-
On the first page of the wizard, select the created variable.
-
On the next page of the wizard, in the Mode drop-down list, select Object Property, and then click the ellipsis button in the Value edit box.
-
In the resulting dialog, click Onscreen Object and then point to the combo box control on the web page.
-
On the next page of the wizard, select the
wItem
property. Then, click param and enter the index of the item. In our example, the index of the first item is 0.Note: To get the total number of combo box items, use the
wItemCount
property. -
Click Finish to complete adding the operation.
In script tests
The sample script below shows how to get the caption of the first item of a combo box and post it to the test log:
Web (Cross-Platform)
JavaScript, JScript
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers.Item(btChrome).Run(url);
var cb = Sys.Browser().Page(url).FindElement("#themeName");
// Post the caption of the first combo box item to the test log
if (cb.wItemCount > 0)
Log.Message(cb.wItem(0));
}
Python
def Sample_GetItem():
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item[btChrome].Run(url)
cb = Sys.Browser().Page(url).FindElement("#themeName")
# Post the caption of the first combo box item to the test log
if (cb.wItemCount > 0):
Log.Message(cb.wItem[0]);
VBScript
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item(btChrome).Run(url)
Set cb = Sys.Browser().Page(url).FindElement("#themeName")
' Post the caption of the first combo box item to the test log
If cb.wItemCount > 0 Then
Log.Message(cb.wItem(0))
End If
End Sub
DelphiScript
var url, cb;
begin url := 'https://services.smartbear.com/samples/TestComplete15/smartstore/';
Browsers.Item(btChrome).Run(url);
cb := Sys.Browser().Page(url).FindElement('#themeName');
// Post the caption of the first combo box item to the test log
if cb.wItemCount > 0 then
Log.Message(cb.wItem(0));
end;
C++Script, C#Script
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers["Item"](btChrome)["Run"](url);
var cb = Sys["Browser"]()["Page"](url)["FindElement"]("#themeName");
// Post the caption of the first combo box item to the test log
if (cb["wItemCount"] > 0)
Log["Message"](cb["wItem"](0));
}
Web (Classic)
JavaScript, JScript
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers.Item(btChrome).Run(url);
var propNames = new Array("ObjectType", "ObjectIdentifier");
var propValues = new Array("Select", "themeName");
var cb = Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, true);
// Post the caption of the first combo box item to the test log
if (cb.wItemCount > 0)
Log.Message(cb.wItem(0));
}
Python
def Sample_GetItem():
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item[btChrome].Run(url)
propNames = ["ObjectType", "ObjectIdentifier"]
propValues = ["Select", "themeName"]
cb = Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, True)
# Post the caption of the first combo box item to the test log
if (cb.wItemCount > 0):
Log.Message(cb.wItem[0])
VBScript
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item(btChrome).Run(url)
propNames = Array("ObjectType", "ObjectIdentifier")
propValues = Array("Select", "themeName")
Set cb = Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, True)
' Post the caption of the first combo box item to the test log
If cb.wItemCount > 0 Then
Log.Message(cb.wItem(0))
End If
End Sub
DelphiScript
var url, propNames, propValues, cb;
begin url := 'https://services.smartbear.com/samples/TestComplete15/smartstore/';
Browsers.Item(btChrome).Run(url);
propNames := ['ObjectType', 'ObjectIdentifier'];
propValues := ['Select', 'themeName'];
cb := Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, true);
// Post the caption of the first combo box item to the test log
if cb.wItemCount > 0 then
Log.Message(cb.wItem(0));
end;
C++Script, C#Script
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers["Item"](btChrome)["Run"](url);
var propNames = new Array("ObjectType", "ObjectIdentifier");
var propValues = new Array("Select", "themeName");
var cb = Sys["Browser"]()["Page"](url)["FindChildEx"](propNames, propValues, 15, true);
// Post the caption of the first combo box item to the test log
if (cb["wItemCount"] > 0)
Log["Message"](cb["wItem"](0));
}
Open and close drop-down lists
When simulating user actions over a combo box on a web page, you may need to open its drop-down list or to close it. To do this, you can use the DropDown
and CloseUp
methods of the Web Combo Box
object. You can also do it by simulating clicks on the drop-down button of the combo box. Before simulating these actions, you may want to check if the list is already opened or closed.
The samples below show how to check if the drop-down list of the combo box is opened and how to open or close the list, in keyword tests and in script tests respectively.
In keyword tests
To check if the drop-down list is opened or closed and perform various actions depending on the result, you can use the If … Then and Else operations:
-
Add the If … Then operation to your test.
-
Specify the condition that will get the state of the combo box drop-down list and compare it against the expected value:
-
In the Value 1 column of the Operation Parameters dialog, click the ellipsis button.
-
In the resulting Edit Value dialog, set the mode to Object Property.
-
Set the value to Onscreen Object.
-
Point to the combo box on the web page.
-
To get the list state, select the
wisDropDownOpened
property. -
Click OK to close the dialog.
-
In the Value 2 column, enter the baseline value against which the list state will be compared:
true
for opened andfalse
for closed. -
Click OK to save the changes and close the Operation Parameters dialog.
-
-
To specify operations to run if the check box has the expected state, add them as child items of the If … Then operation. For example, add the On-Screen Action operation as a child item of the If … Then operation and configure it to close the drop-down list if it is opened. Use the
CloseUp
method to do this. -
To specify the operation to run otherwise, add the Else operation right after the If … Then operation, and then add the needed operations as child items of the Else operation. For example, add the On-Screen Action operation and configure it to open the drop-down list. Use the
DropDown
method to do this.
In script tests
Web (Cross-Platform)
JavaScript, JScript
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers.Item(btChrome).Run(url);
var cb = Sys.Browser().Page(url).FindElement("#themeName");
// Check if the drop-down list is opened
if (cb.wIsDropDownOpened)
// Close the drop-down list
cb.CloseUp();
else
// Open the drop-down list
cb.DropDown();
}
Python
def Sample_DropDown():
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item[btChrome].Run(url)
cb = Sys.Browser().Page(url).FindElement("#themeName")
# Check if the drop-down list is opened
if (cb.wIsDropDownOpened):
# Close the drop-down list
cb.CloseUp()
else:
# Open the drop-down list
cb.DropDown()
VBScript
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item(btChrome).Run(url)
Set cb = Sys.Browser().Page(url).FindElement("#themeName")
' Check if the drop-down list is opened
If cb.wIsDropDownOpened Then
' Close the drop-down list
cb.CloseUp
Else
' Open the drop-down list
cb.DropDown
End If
End Sub
DelphiScript
var url, cb;
begin url := 'https://services.smartbear.com/samples/TestComplete15/smartstore/';
Browsers.Item(btChrome).Run(url);
cb := Sys.Browser().Page(url).FindElement('#themeName');
// Check if the drop-down list is opened
if cb.wIsDropDownOpened then
// Close the drop-down list
cb.CloseUp()
else
// Open the drop-down list
cb.DropDown();
end;
C++Script, C#Script
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers["Item"](btChrome)["Run"](url);
var cb = Sys["Browser"]()["Page"](url)["FindElement"]("#themeName");
// Check if the drop-down list is opened
if (cb["wIsDropDownOpened"])
// Close the drop-down list
cb["CloseUp"]();
else
// Open the drop-down list
cb["DropDown"]();
}
Web (Classic)
JavaScript, JScript
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers.Item(btChrome).Run(url);
var propNames = new Array("ObjectType", "ObjectIdentifier");
var propValues = new Array("Select", "themeName");
var cb = Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, true);
// Check if the drop-down list is opened
if (cb.wIsDropDownOpened)
// Close the drop-down list
cb.CloseUp();
else
// Open the drop-down list
cb.DropDown();
}
Python
def Sample_DropDown():
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item[btChrome].Run(url)
propNames = ["ObjectType", "ObjectIdentifier"]
propValues = ["Select", "themeName"]
cb = Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, True)
# Check if the drop-down list is opened
if (cb.wIsDropDownOpened):
# Close the drop-down list
cb.CloseUp()
else:
# Open the drop-down list
cb.DropDown()
VBScript
url = "https://services.smartbear.com/samples/TestComplete15/smartstore/"
Browsers.Item(btChrome).Run(url)
propNames = Array("ObjectType", "ObjectIdentifier")
propValues = Array("Select", "themeName")
Set cb = Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, True)
' Check if the drop-down list is opened
If cb.wIsDropDownOpened Then
' Close the drop-down list
cb.CloseUp
Else
' Open the drop-down list
cb.DropDown
End If
End Sub
DelphiScript
var url, propNames, propValues, cb;
begin url := 'https://services.smartbear.com/samples/TestComplete15/smartstore/';
Browsers.Item(btChrome).Run(url);
propNames := ['ObjectType', 'ObjectIdentifier'];
propValues := ['Select', 'themeName'];
cb := Sys.Browser().Page(url).FindChildEx(propNames, propValues, 15, true);
// Check if the drop-down list is opened
if cb.wIsDropDownOpened then
// Close the drop-down list
cb.CloseUp()
else
// Open the drop-down list
cb.DropDown();
end;
C++Script, C#Script
{
var url = "https://services.smartbear.com/samples/TestComplete15/smartstore/";
Browsers["Item"](btChrome)["Run"](url);
var propNames = new Array("ObjectType", "ObjectIdentifier");
var propValues = new Array("Select", "themeName");
var cb = Sys["Browser"]()["Page"](url)["FindChildEx"](propNames, propValues, 15, true);
// Check if the drop-down list is opened
if (cb["wIsDropDownOpened"])
// Close the drop-down list
cb["CloseUp"]();
else
// Open the drop-down list
cb["DropDown"]();
}
See Also
Working With Application Objects and Controls
Web and RIA Testing