量角器 - 无法定义具有动态ID的复选框

时间:2016-06-07 22:25:41

标签: javascript angularjs protractor

我需要定义一个特定的复选框,然后(稍后点击)点击它以完成帐户创建。问题是输入id的一部分是动态的,并随着每次运行而改变。因此,我的方法不起作用:

var nativeChannels = element(by.css("label[for='dp-native-9597']"));

当我检查元素时,它显示以下内容:

div class="switch"input id="dp-native-9597" type="checkbox" ng-model="controls.allNativeChannels" class="cmn-toggle cmn-toggle-round ng-pristine ng-untouched ng-valid" autocomplete="off">label for="dp-native-9597">/label/div

label for="dp-native-9597"/label

我搜索了一种在dp-native-之后放置一个狂野角色的方法,但看起来这是不允许的。有没有办法定义这种类型的复选框,以便我可以继续进行测试?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

尝试使用以下xpath。 .//label [contains(@ for," dp-native - ")]

答案 1 :(得分:0)

CSS中有通配符选择器(http://www.w3schools.com/cssref/css_selectors.asp):

[attribute^=value]  a[href^="https"]    Selects every <a> element whose href attribute value begins with "https"
[attribute$=value]  a[href$=".pdf"] Selects every <a> element whose href attribute value ends with ".pdf"
[attribute*=value]  a[href*="w3schools"]    Selects every <a> element whose href attribute value contains the substring "w3schools"

尝试其中之一。我想你可能会这样搜索:

$(".switch[id*='dp-native'] label")

或按型号(http://www.protractortest.org/#/api?view=ProtractorBy.prototype.model):

element(by.model('controls.allNativeChannels')).$('label');