So this is the HTML
<ul class="has-status sub-menu">
<!-- ngRepeat: subItem in item.subMenuItems track by subItem.name -->
<li ng-repeat="subItem in item.subMenuItems track by subItem.name" ui-sref-active="active" ng-class="{'saved': subItem.hasStatus && subItem.isValid, 'unsaved': subItem.hasStatus && !subItem.isValid}" class="ng-scope saved">
<a class="sub-menu-item ng-scope" tabindex="" ui-sref="procurement.details.general-info" translate="procurement.menu.item.generalInfo" href="#/procurement/382125/general-info">additional data</a>
</li>
<!-- end ngRepeat: subItem in item.subMenuItems track by subItem.name -->
<li ng-repeat="subItem in item.subMenuItems track by subItem.name" ui-sref-active="active" ng-class="{'saved': subItem.hasStatus && subItem.isValid, 'unsaved': subItem.hasStatus && !subItem.isValid}" class="ng-scope saved">
<a class="sub-menu-item ng-scope" tabindex="" ui-sref="procurement.details.procurers" translate="procurement.menu.item.procurers" href="#/procurement/382125/procurers">Hankijad</a>
</li>
<!-- end ngRepeat: subItem in item.subMenuItems track by subItem.name -->
<li ng-repeat="subItem in item.subMenuItems track by subItem.name" ui-sref-active="active" ng-class="{'saved': subItem.hasStatus && subItem.isValid, 'unsaved': subItem.hasStatus && !subItem.isValid}" class="ng-scope saved">
<a class="sub-menu-item ng-scope" tabindex="" ui-sref="procurement.details.additional-data" translate="procurement.menu.item.additionalData" href="#/procurement/382125/additional-data">Hanke lisaandmed</a>
</li>
<!-- end ngRepeat: subItem in item.subMenuItems track by subItem.name -->
<li ng-repeat="subItem in item.subMenuItems track by subItem.name" ui-sref-active="active" ng-class="{'saved': subItem.hasStatus && subItem.isValid, 'unsaved': subItem.hasStatus && !subItem.isValid}" class="ng-scope unsaved" style="">
<a class="sub-menu-item ng-scope" tabindex="" ui-sref="procurement.details.procurement-passport" translate="procurement.menu.item.procurementPassport" href="#/procurement/382125/procurement-passport">Additional other data</a>
</li>
<!-- end ngRepeat: subItem in item.subMenuItems track by subItem.name -->
<li ng-repeat="subItem in item.subMenuItems track by subItem.name" ui-sref-active="active" ng-class="{'saved': subItem.hasStatus && subItem.isValid, 'unsaved': subItem.hasStatus && !subItem.isValid}" class="ng-scope unsaved">
<a class="sub-menu-item ng-scope" tabindex="" ui-sref="procurement.details.qualification-conditions" translate="procurement.menu.item.qualificationConditions" href="#/procurement/382125/qualification-conditions">Vastavustingimused</a>
</li>
<!-- end ngRepeat: subItem in item.subMenuItems track by subItem.name -->
<li ng-repeat="subItem in item.subMenuItems track by subItem.name" ui-sref-active="active" ng-class="{'saved': subItem.hasStatus && subItem.isValid, 'unsaved': subItem.hasStatus && !subItem.isValid}" class="ng-scope saved active">
<a class="sub-menu-item ng-scope" tabindex="" ui-sref="procurement.details.evaluation" translate="procurement.menu.item.evaluation" href="#/procurement/382125/evaluation">Criteriad</a>
</li>
<!-- end ngRepeat: subItem in item.subMenuItems track by subItem.name -->
<li ng-repeat="subItem in item.subMenuItems track by subItem.name" ui-sref-active="active" ng-class="{'saved': subItem.hasStatus && subItem.isValid, 'unsaved': subItem.hasStatus && !subItem.isValid}" class="ng-scope unsaved" style="">
<a class="sub-menu-item ng-scope" tabindex="" ui-sref="procurement.details.notices" translate="procurement.menu.item.notices" href="#/procurement/382125/notices">Something</a>
</li>
<!-- end ngRepeat: subItem in item.subMenuItems track by subItem.name -->
<li ng-repeat="subItem in item.subMenuItems track by subItem.name" ui-sref-active="active" ng-class="{'saved': subItem.hasStatus && subItem.isValid, 'unsaved': subItem.hasStatus && !subItem.isValid}" class="ng-scope saved">
<a class="sub-menu-item ng-scope" tabindex="" ui-sref="procurement.details.documents({group: 'B'})" translate="procurement.menu.item.documents" href="#/procurement/382125/documents?group=B">documents</a>
</li>
<!-- end ngRepeat: subItem in item.subMenuItems track by subItem.name -->
</ul>
As you can see there are multiple submenu items containing an a
element, I've tried the following.
element.all(by.tagName('a')).get(1).click();
element(by.css('.submenu-item a')).get(1).click();
But I'm using typescript and that causes an error. Is there a good xpath I could use to either get element by its order number, or by its value?
a
elements, not classes. Also, I notice that you're attempting to select by class ofsubmenu-item
, but based on your html it looks like the class issub-menu-item
. You also probably wantby.css('a.submenu-item')
-- what you have will only selecta
elements that are children of elements with a class of.submenu-item
.