我是新来的量角器,在这里我想从测试的量角器angularjs日期选择器。
我试图找到一种方式来做到这一点, 这篇文章是我发现的唯一的事情,这不是很清楚的使用
如果有人知道如何测试,请帮助。
我需要的是选择今天的日期。
提前致谢 :)
alecxe,这里是我的日期选择器的屏幕截图。 遗憾的是不能提供的页面的链接。 :(
<input
class="form-control ng-pristine ng-valid ng-not-empty ng-touched"
ng-model="invoice.fromdate"
data-date-format="yyyy-MM-dd"
data-date-type="string"
data-max-="" data-autoclose="1"
bs-datepicker=""
ng-change="dateRange()"
type="text">
我想你可以避免手动,而是操纵日期选择器或者通过发送只是用按键设置日期今天的日期值 :
var picker = element(by.model("invoice.fromdate"));
// get today's date
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();
if(dd<10) {
dd='0'+dd
}
if(mm<10) {
mm='0'+mm
}
today = mm+'/'+dd+'/'+yyyy;
picker.clear();
picker.sendKeys(today);
或者,通过直接将相关模型的价值 :
picker.evaluate("invoice.fromdate= '" + today + "'");
var data_picker = element(by.model("invoice.fromdate"));
// select current date with date function
var current_date = new Date();
var day = today.getDate();
var month = today.getMonth()+1; //By default January count as 0
var year = today.getFullYear();
if(day<10) {
day='0'+day
}
if(month<10) {
month='0'+month
}
current_date = month+'/'+day+'/'+year;
data_picker.clear(); // Note if you are facing error message related to clear. Comment this line
data_picker.sendKeys(today);
Hope this will work
两种方法迄今已建议:1的SendKeys()2.评估()我是一个有点新的量角器,但我认为这两个有没有那种滋生日历,即输入元素的情况下的问题:
的SendKeys()只如果日期是在元素上和UIB-日期选择器是一个下拉某种交易。 这并没有帮助我,因为我的日期选择器元件是一个独立的,不与输入元素配对。
评价()不更新浏览器角的实际模型(这引出实际上是多么有用评估问题...)。 据量角器文档 ,评估“的计算结果的输入,好像它是在当前基础元素的范围。” 在我来说,我想测试通过日期选择器生成的日期是否通过POST请求得到我的enpdpoint,然后再回来(因此E2E)没有得到effed(损坏),因此,我需要我的日期是在我的角度模式该浏览器实例,不仅在浏览器的驱动程序环境或任何量角器测试的运行环境是。 我可能是错的这一点。
这种期望()传递,但NG-形式是无效的(我假设在浏览器B / C模式wan't实际更新接收我试图在传递的日期。):
function convertToPickerDate(date) {
var date = new Date(date);
var dd = date.getDate();
var mm = date.getMonth() + 1; //January is 0!
var yyyy = date.getFullYear();
var yy = yyyy.toString().slice(2);
return mm + '/' + dd + '/' + yy;
}
// expect passes, but form is invalid - DON'T USE for standalone cal
it('should enter start date in date picker', function () {
offerStart = convertToPickerDate(myData.startDate);
var offerStartPicker = element(by.model('current.startDate'));
offerStartPicker.evaluate("current.startDate = '" + offerStart + "'");
offerStartPicker.evaluate("current.startDate").then(function (value) {
expect(value).toBe(offerStart);
});
})
但NG-形式的元素是无效...
我的解决方案使用CSS选择键和方向键来选择相对于今天的日期:
Shipment Start Date: <em id="offerStartPrint">{{current.startDate | date:'shortDate' }}</em>
<div id="offerStart"
name="offerStart"
uib-datepicker
ng-model="current.startDate"
class=""
ng-change="setStartDate()"
datepicker-options="startDateOptions"
required></div>
</div>
function convertToPickerDate(date) {
var date = new Date(date);
var dd = date.getDate();
var mm = date.getMonth() + 1; //January is 0!
var yyyy = date.getFullYear();
var yy = yyyy.toString().slice(2);
return mm + '/' + dd + '/' + yy;
}
it('should enter expiration date in date picker using tabs and arrows :)', function () {
// select today element on uib-datepicker calendar
// div#offerStart elem has date model
var calToday = element(by.css('div#offerStart table td button.active'));
calToday.sendKeys(protractor.Key.ARROW_DOWN); // one week away
calToday.sendKeys(protractor.Key.ARROW_DOWN); // two weeks away
calToday.click(); // if you remove this click no date is entered
var fortnightAway = new Date(Date.now() + 12096e5);
fortnightAwayString = convertToPickerDate(fortnightAway);
expect(element(by.id('offerStartPrint')).getText()).toBe(fortnightAwayString);
})
左,右箭头可以用一个天一个地递增/递减日期。 向上/向下箭头,可以使用在一个时间到INC / DEC一周。 一个也许可以想出如何通过几个月和几年箭头也是如此。