angular-ui datepicker(https://angular-ui.github.io/bootstrap/#/datepicker)是我在量角器e2e测试中选择的组件。
我可以按如下方式打开日历(效果很好):
this.calendarClick = function () {
var sel = '.calendar .glyphicon-calendar';
return element(by.css(sel)).click();
};
但是,我还想在日历上选择特定日期。
使用jQuery,我可以轻松选择日历中的所有跨度:
$('[ng-click="select(dt.date)"] > span')
返回类似数组的对象:
0:span.ng-binding.text-muted
1:span.ng-binding.text-muted
2:span.ng-binding.text-muted
3:span.ng-binding.text-muted

我也可以使用jQuery来选择" 01"在日历上:
$('[ng-click="select(dt.date)"] > span:contains("01")')
[span.ng-binding, span.ng-binding.text-muted]
但是使用Protractor,如何在日历上选择特定的日元素?
我正在考虑这样的事情,只需点击第一天元素:
element.all(by.css('[ng-click="select(dt.date)"] > span')).then(function (el) {
console.log(el[0]);
el.first().click();
});
但它引发了错误:
TypeError: el.first is not a function
建议表示赞赏......
的问候, 鲍勃
答案 0 :(得分:2)
使用定位器by.cssContainingText
获取包含文本“01”的元素:
element(by.cssContainingText('[ng-click="select(dt.date)"] > span', '01'))
.click();
或.get
按索引获取元素:
element.all(by.css('[ng-click="select(dt.date)"] > span'))
.get(0)
.click();
或.first
获取第一个元素:
element.all(by.css('[ng-click="select(dt.date)"] > span'))
.first()
.click();
答案 1 :(得分:1)
您可以使用问题中提到的相同jquery选择器来单击元素。
$('[ng-click="select(dt.date)"] > span:[text="01"]').click()