Within a browser, all visible and invisible elements of a Web page are represented as a hierarchical tree of objects, the Document Objects Model (DOM). To interact with elements of a Web page, Silk Performer uses the concept of object identifiers, so-called locators. Locators are XPath query strings that identify one or more elements of the current DOM. For additional information about XPath, see http://www.w3.org/TR/xpath20/.
All API calls that interact with DOM elements take a locator as an input parameter. For example, the API call BrowserLinkSelect(“//a[@href=’www.companyxyz.com’]”) uses the locator //a[@href=’www.companyxyz.com’] which identifies the first link that has www.companyxyz.com as the value of its href attribute (for example, <a href=”www.companyxyz.com”>My Link</a>).
The following table lists all XPath constructs that are supported by Silk Performer:
Supported XPath Construct | Sample | Description |
---|---|---|
Attribute | a[@href='myLink'] | Identifies all DOM Links with the given href attribute that are children of the current context. All DOM attributes are supported. |
Index | a[1] | Identifies the first DOM link that is a child of the current context. Indices are 1-based in XPath. |
Logical Operators: and, or, = | a[(@href='microfocus' or @caption != 'b') and @id='p'] | |
. | .//div[@id='menuItem']/. | The" ." refers to the current context (similar to the well known notation in file systems. The example is equivalent to //div[@id='menuItem']/ |
.. | //input[@type='button']/../div | Refers to the parent of an object. For example, the sample identifies all divs that contain a button as a direct child. |
/ | /form | Finds all forms that are direct children of the current object. ./form is equivalent to / form and form. |
/ | /form/input | Identifies all input elements that are a child of a form element. |
// | //input[type='checkbox'] | Identifies all check boxes in a hierarchy relative to the current object. |
// | //div[id='someDiv'//input[type='button'] | Identifies all buttons that are a direct or indirect child of a div that is a direct or indirect child of the context. |
/ | //div | Identifies all divisions that are direct or indirect children of the current context. |
The following table lists the XPath constructs that Silk Performer does not support.
Unsupported XPath Construct | Example |
---|---|
Comparing two attributes to one another | a[@caption = @href] |
Attribute names on the right side are not supported. Attribute names must be on the left side. | a['abc' = @caption] |
Combining multiple XPath expressions with and or or. | a [@caption = 'abc'] or .//input |
More than one set of attribute brackets | div[@class = 'abc'] [@id = '123'] (use div[@caption = 'abc' and @id = '123'] instead) |
More than one set of index brackets | a[1][2] |
Wildcards in tag names or attribute names | */@c?ption='abc' |
Logical operators: not, != | a[@href!='someValue'], not[@href='someValue'] |
Any construct that does not explicitly specify a class or the class wildcard. For example, including a wildcard as part of a class name. | //[@caption = 'abc'] |
The following list shows wildcard examples that match //[@caption ='abc def']: