当前位置: 首页 > 知识库问答 >
问题:

如何从量角器测试角度js日期选择器

孙梓
2023-03-14

我是量角器的新手,在这里我尝试测试量角器的angularjs日期选择器。

我试图找到一种方法来做到这一点,而这篇文章是我唯一找到的东西,使用起来不太清楚

如果有人知道如何测试,请帮忙。

我需要的是选择今天的日期。

提前感谢:)

    < li >编辑-

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">

共有3个答案

韶浩博
2023-03-14
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
公沈浪
2023-03-14

发送键() 仅当日期在元素上并且 uib 日期选取器是一种下拉列表交易时才有效。这对我没有帮助,因为我的日期选取器元素是独立的,没有与输入元素配对。
evaluate() 不会在浏览器中更新 angular 的实际模型(这就引出了一个问题,即评估实际上有多大用处...)。根据量角器文档,评估,“评估输入,就好像它在当前基础元素的范围内一样。在我的情况下,我想测试日期选择器生成的日期是否通过发布请求到达我的enpdpoint,然后再次返回(因此e2e)而不会被effed(损坏),因此,我需要我的日期在浏览器实例中的角度模型上,而不仅仅是在浏览器驱动程序环境中或量角器测试的运行时环境中。我可能错了。
这个期望()通过,但ng形式是无效的(我假设浏览器中的b / c模型实际上没有更新以接收我试图传入的日期。

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);
    })

左箭头和右箭头可用于一次增加/减少一天的日期。向上/向下箭头可用于一次增加/减少一周。人们或许也能弄清楚如何穿越月和年。

丰胤运
2023-03-14

我认为您可以避免手动操作日期选择器,而是通过发送带有今天日期值的键来设置日期:

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 + "'");
 类似资料:
  • 问题内容: WebStorm中提供了一种运行和调试量角器Web测试的方法。我只想在这里分享这个答案 问题答案: 获取节点路径(在终端中输入) 在WebStorm中:单击“ 编辑配置 ”-“ 运行 ”按钮左侧的下拉菜单(绿色箭头,类似于“播放”按钮) 单击“添加按钮”(绿色 + )以添加新的Node配置。选择“ Node.js ” 填写参数: 节点解释器 :Node.js的完整路径(从步骤1开始)

  • 我有以下配置,但得到错误 詹金斯命令 下面是我的配置文件

  • 我有一个带有输入框和用户界面选择下拉列表的表单,在ng-blur事件中,我调用了一个方法来自动选择所有三个用户界面选择中的选项。当我使用量角器e2e测试执行此操作时,它不会等待用户界面选择发生并提交表单,这会引发异常,因为它没有找到只有在提交包含所有必需字段的表单后才会出现的元素。我试过这样browser.wait 它正在抛出异常。

  • 角度字段存储数字作为其值,并存储字符串作为其文本。 它的值是0到360之间的数字(可以更改此范围),而其文本可以是输入到其编辑器中的任何字符串。 角度字段 带编辑器的角度字段 压缩的角度字段 创造 { "type": "example_angle", "message0": "angle: %1", "args0": [ { "type": "field_angle

  • 我使用量角器在角应用端到端测试。我试图点击选择框中的选项,但我有以下错误元素目前不可见,可能无法操纵。 我有这部分html: 在量角器测试中我有一行代码: 我想点击值为“草稿”的选项。你知道可能是什么问题吗?

  • 我正在尝试测试选择选项中的项目文本,但我的测试失败,并给出错误,以下是我的规范: 它('应该测试sorting_options文本', 函数() { 以下是我收到的错误: C: \wamp\www\第一个-角度-应用程序 如何解决这个问题?