如何为角度js元素创建相对xpath?

时间:2016-01-10 20:50:45

标签: angularjs selenium xpath selenium-webdriver automation

我需要为复选框创建xpath。它是一个角度js元素。我试图用firebug生成xpath。但是它给出了html xpath并且它没用。我想知道如何创建相对xpath复选框。

Firebugxpath:

html/body/div[2]/div/div/div/div/div[1]/div/div/div[1]/div/div[2]/div/div[2]/div[1]/div[3]/check-box/div/div[2]/a

Firebug xpath对于识别元素没有用。我尝试了一些带有包含方法的相对xpath(即//class[contains(text(),'email')])。但它无用

请问您能否以不同方式帮助我创建相对xpath以获取以下代码?

<check-box class="ng-untouched ng-valid ng-isolate-scope ng-dirty ng-valid-parse" text="By email" name="email" ng-model="vm.options.byEmail" tab-index="3" style="">
<div class="MMM-check-box" ng-class="customClass ? customClass : ''">
<div class="MMM-label ng-binding MMM-label--hidden" ng-class="!label ? 'MMM-label--hidden' : ''" style=""/>
<div class="MMM-check-box__field" ng-keydown="onFocus($event)" tabindex="3">
<a class="MMM-check-box__link" name="email" ng-click="change()" ng-class="toggle === true ? 'MMM-check-box__link--selected' : ''">
<div class="MMM-check-box__title ng-binding">By email</div>
<div class="MMM-check-box__textarea-container ng-hide" ng-show="withTextarea && toggle === true" style="">
</div>
</div>
</check-box>

我的元素来自此标记:

<a class="MMM-check-box__link" name="email" ng-click="change()" ng-class="toggle === true ? 'MMM-check-box__link--selected' : ''">

1 个答案:

答案 0 :(得分:0)

元素的name应被视为定位元素的最可靠方法之一:

//check-box[@name="email"]

请注意,“模型”通常也是定位Angular元素的好方法:

//check-box[@ng-model="vm.options.byEmail"]

如果您使用的是protractor,则可以使用by.model locator

element(by.model("vm.options.byEmail"));