Use this method to search the current browser viewport for one or more graphics regions defined by visual locators.
names_a = ["locator_1a", "locator_1b", "locator_1c"] loc_regions_5 = eyes.locate(VisualLocator.names(names_a).first())
- An object that defines the required visual locator names and how many instances of each locator should be found. This object is created using a series of calls on a VisualLocator object in a fluent API style. See the example below for more details.
- Type: LOCATORS_TYPE
If the image of a particular locator name is not found in the viewport, the locator is mapped to a zero length array. If a locator name is passed, and a locator of that name has not been defined on the Eyes server, the returned locator will be mapped to a value of None instead of an array.and each value is an object that contains the text found and its bounding rectangle.
- A mapping of each locator to the region identified for that locator.
The article Visual locators describes in detail how to associate locator names with graphic images and how to search for instances of the graphic in the browser viewport. The example below is a briefer description of how to search for instances of the locator graphics.
The example below includes two calls to the method Eyes.locate. These calls illustrate two ways to specify the visual locators and two ways to specify how many locators to return.
Two ways of specifying visual locators are:
You can call these methods multiple times to specify multiple locators names or multiple lists of locator names.
To specify how many regions to return per locator, append one of the following methods:
- To retrieve a maximum of one region for each locator append a call to first.
- To retrieve all regions for all locators append a call to (all).
# return a zero or one locator for each of the three locators defined as parameters to name() loc_regions_6 = eyes.locate( (VisualLocator.name("locator_a") .name("locator_b") .name("locator_c") .first())) # return all the locator found for the locators defined in the lists passed to names() or Strings passed to name() locator_list_1 = ["locator_1a", "locator_1b", "locator_1c"] locator_list_2 = ["locator_2a", "locator_2b", "locator_2c"] loc_regions_7 = eyes.locate( (VisualLocator.names(locator_list_1) .names(locator_list_1) .name("another locator") .all())) locators_regions = eyes.locate(VisualLocator.names(["locator_a", "locator_b", "locator_c"]).all()) # Loop through all the locators and click on the center of their region for locator_info in locators_regions: for locator, region in locator_info: x = region.left + region.width/2 y = region.top + region.height/2 print("loc = ", locator, " x = ", x, " y = ", y)