如何使用量角器测试日期选择器?

How to test date picker using protractor?

我正在测试使用 ngbDatepicker 的日期选择器,它只允许用户从日历中选择日期。有什么方法可以使用量角器从中选择日期吗?

<form class="form-inline">
  <div class="form-group">
    <div class="input-group">
      <input class="form-control" placeholder="yyyy-mm-dd"
             name="dp" [(ngModel)]="model" ngbDatepicker #d="ngbDatepicker">
      <div class="input-group-append">
        <button class="btn btn-outline-secondary calendar" (click)="d.toggle()" type="button"></button>
      </div>
    </div>
  </div>
</form>

这是日期选择器的屏幕截图:

我需要的是select日期选择器中的后天。

提前致谢!!

是的,可以使用量角器选择日期。您可以模拟用户可以执行的所有行为。

因为您没有提供端到端的测试源代码。以下几点将指导您为日期选择器编写端到端测试。

const EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(element(by.css('btn-outline-secondary'))), 5000).then(() => {
    element(by.css('btn-outline-secondary')).click(); // This will click calendar icon
    const d = new Date().getDate()+1; // This will get you next day value

    // Write your code to find next day element and click it using click() function
    // Hint: Each day is a "div" with class "btn-light" and day as content of that div element 
});

EC.presenceOf() 将检查日历图标按钮是否存在(并会在 5 秒后超时)。
如果存在,则它将单击该图标。因此,日历将打开。

现在,你的任务是确定第二天并select它。
可以使用 getDate() 函数来识别第二天,如上所示。
选择它也可以很容易地完成,上面给出了提示。

您可以直接将密钥发送到该日期的输入。 它的格式很棘手。从截图中我可以看到它的日/月/年

试试下面的代码: 你将需要 momentjs 包:https://www.npmjs.com/package/moment 以下是有关时刻日期格式化程序的信息:https://devhints.io/moment

    const datenow = new Date();
    datenow.setDate(datenow.getDate() + 1); // today + 1 day.

    const moment = require('moment');

    // format the date to string.
    const formatedDate = moment(datenow).format('D MMM YYYY'); 

    // send the formated date to the input.
    element(by.xpath('//input[@class=\'form-control\']')).sendKeys(formatedDate);

注意:根据您的需要进行调整,这只是如何处理日期选择器的示例。