我需要定义一个特定的复选框,然后(稍后点击)点击它以完成帐户创建。问题是输入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-
之后放置一个狂野角色的方法,但看起来这是不允许的。有没有办法定义这种类型的复选框,以便我可以继续进行测试?
提前感谢您的帮助!
答案 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');