Register a named XPath selector at runtime.
When (I |we )*add "([^"]*)" selector for "([^"]*)" xpath selector
Example #1: When I add "page title" selector for "//h1[contains(@class,'page-header')]" xpath selector
Example #2: When I add "Dashboard" selector for "//*[@id='navbar-link-admin-dashboard']" xpath selector
Example #3: When I add "Vertical orientation" selector for "//*[@id='navbar-item--2-tray']/div/div[2]/div/button" xpath selector
Example #4: When I add "admin menu" selector for "//nav[contains(@class,'admin-menu')]" xpath selector
Example #5: When I add "first table row" selector for "//table/tbody/tr[1]" xpath selector
Example #6: When I add "active tab" selector for "//li[contains(@class,'active')]/a" xpath selector
Example #7: When I add "error message" selector for "//*[contains(@class,'error')]" xpath selector
Example #8: When I add "site name" selector for "//a[contains(@class,'site-name')]" xpath selector
Example #9: When I add "user menu" selector for "//*[@id='user-menu']" xpath selector
Example #10: When I add "language switcher" selector for "//ul[contains(@class,'language-switcher')]" xpath selector
Advanced:
Example #11: Axis predicates — first match only (locator.first() is applied):
When I add "first row" selector for "//table//tr[1]" xpath selector
Example #12: Text contains — name by rendered label:
When I add "login link" selector for "//a[contains(normalize-space(.),'Login')]" xpath selector
Example #13: Attribute + position — last nav item:
When I add "last nav item" selector for "//nav[@role='navigation']//a[last()]" xpath selector