Tips and tricks - General
The following tips and tricks are relevant for all AUT technologies.
Return a test object collection to match a description
C# and Java: | Use the <TestObject>.FindChildren method. |
JavaScript: |
Use .$$ syntax. For details, see Setting up and working with the JavaScript SDK |
Use a regular expression for a property value
C#: | IDProp = As.RegExp(@"RegExpValue") |
Java: | .idProp(new RegExpProperty("RegExpValue")) |
JavaScript: | idProp:/RegExpValue/ |
For more details, see Regular expression guidelines.
Use SDK exceptions to debug your test
OpenText Functional Testing for Developers information from SDK exceptions can be helpful when debugging your test.
For example:
ReplayObjectNotFoundException | Thrown during a test run when no object matches the test object description. |
ReplayObjectNotUniqueException | Thrown during a test run when more than one object matches the test object description. |
Pause a spying operation
While spying on objects with the Object Identification Center (OIC), you may want to temporarily pause the spying operation, for example to use your mouse to bring another application into focus.
Press and hold Ctrl on your keyboard to pause the spy while performing other mouse operations.
Type text and special characters
Type text and special characters, such as ALT, F1 keys, Esc, or CapsLock into fields in your application.
Use the SendKeys method with constants from the Keys class.
Capture text from an application using OCR
To capture text from within a specific object in your application, use the GetVisibleText and GetTextLocations methods, available for all test objects.
You can also capture an image of any part of your application and then use the GetText and LocateText methods of the ImageUtils class to capture text from within a supplied image.
For more details, see Tips & tricks - OCR methods (Windows only) and the .NET SDK Reference, Java SDK Reference, or JavaScript SDK Reference.
DataGridView: Use a native object to mouse-click a table cell (C#)
When working with tables based on the class System.Windows.Forms.DataGridView, you can use a native object to mouse-click a table cell in two ways:
Note: To check which class your table is based on, check the table test object's FullType property.
Create a method that performs a mouse-click:
public static void ClickCell(ITable table, int columnIndex, int rowIndex)
{
dynamic cellRectangle = table.NativeObject.GetCellDisplayRectangle(columnIndex, rowIndex, true);
Point cellPoint = new Point(cellRectangle.X, cellRectangle.Y);
ClickArgs clickArgs = new ClickArgs
{
Button = MouseButton.Left,
Location = new Location(Position.TopLeft, cellPoint)
};
table.Click(clickArgs);
}
Use the ClickCell method providing the relevant table and cell:
ClickCell(myTableObject,columnIndex,rowIndex);
Create an extension method to define mouse-click functionality
static class TableExtensions
{
public static void ClickCell(this ITable table, int columnIndex, int rowIndex)
{
dynamic cellRectangle = table.NativeObject.GetCellDisplayRectangle(columnIndex, rowIndex, true);
Point cellPoint = new Point(cellRectangle.X, cellRectangle.Y);
ClickArgs clickArgs = new ClickArgs
{
Button = MouseButton.Left,
Location = new Location(Position.TopLeft, cellPoint)
};
table.Click(clickArgs);
}
}
Use the table's extension method:
myTableObject.ClickCell(columnIndex,rowIndex);
Use a dynamic browser type
To run the same web test on different browsers, you can provide the browser type to the test as a parameter.
For example, create a test.runsettings file with the following content, and place it in the same folder as the test:
<RunSettings>
<TestRunParameters>
<Parameter name="Browser" value="chrome" /> <!-- "firefox", "edge" -->
</TestRunParameters>
</RunSettings>
In your MSTest, retrieve the parameter, using context.Properties["Browser"]
:
private static BrowserType _browserType;
[ClassInitialize]
public static void ClassInitialize(TestContext context)
{
string browser = context.Properties["Browser"]?.ToString() ??
throw new Exception(@"Test context property ""Browser"" is not set.");
if (Enum.TryParse(browser, true, out _browserType))
{
GlobalSetup(context);
}
else
{
throw new Exception(@$"Unsupported browser type: [{browser}].");
}
}
[TestMethod]
public void Test1()
{
IBrowser browser = BrowserFactory.Launch(_browserType);
browser.Navigate("https://www.advantageonlineshopping.com");
browser.Sync();
. . .
browser.Close();
}
In the dotnet command you use to run the test, add the options that passes runtime parameters to the test: --settings test.runsettings
For more details on using runtime parameters, see the online Microsoft documentation.
See also: