如何在Nightwatch JavaScript Automation中从日期选择器日历中选择日期?

时间:2020-04-16 08:24:02

标签: javascript testing datepicker ui-automation nightwatch.js

我想从日期选择器中选择一个日期,该日期不是静态的,即选择同一天,它本质上应该是动态的。即应该可以选择包括今天在内的任何过去的日期。

问题:单击一个字段后,我得到了这个压延机,我必须从压延机中选择一个日期。怎么做?在Nightwatch js中更可取。

enter image description here

1 个答案:

答案 0 :(得分:1)

这是一个非常重要的问题。我知道没有可以直接插入Nightwatch的“现成”解决方案。

您将要构造一个JavaScript文件,该文件可让您获取每月的某天。但是因为它可能是一个月的最后一天,也可能是一年中的最后一天,所以您也可能需要确定这些时间。

类似的事情开始

const monthNames = ["January", "February", "March", "April", "May", "June",
  "July", "August", "September", "October", "November", "December"
];
var monthShortNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
];
const dayNames = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", 
"Saturday", "Sunday"
];
var dayShortNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
];

const d = new Date();
var month = monthNames[d.getMonth()];
var mmm = monthShortNames[d.getMonth()];
var today = new Date();
var tomorrow = new Date();
tomorrow.setTime(tomorrow.getTime() + (24 * 60 * 60 * 1000));
var mm = today.getMonth()+1; // because January is 0.
var singleDigitDate = today.getDate();
var dd = today.getDate();
var ddnlz = today.getDate(); // single digit dates, no leading zero
var dayShortName = dayShortNames[d.getDay()]; // Mon, Tue, etc.
var mmt = tomorrow.getMonth()+1;
var dt = tomorrow.getDate();
var ddt = tomorrow.getDate();
var yyyy = today.getFullYear();
var yyyyt = tomorrow.getFullYear();
if ( dd<10 ){ dd='0'+dd } // if we need leading zeros for days 
if ( mm<10 ){ mm='0'+mm } // if we need leading zeros for months
if ( ddt<10 ){ ddt='0'+ddt } // if we need leading zeros for days 
if ( mmt<10 ){ mmt='0'+mmt } // if we need leading zeros for months

将其放入/ conf或以其他方式使其可用于base-test-class.js

如果您今天总是想摘货,这很容易做。您将要使用xpath选择器来选择要单击的日期。

您将使用XPATH单击日期,例如单击//*[.='16'],其中16是今天的日期。

如果说要在日历上选择明天,那么事情就会变得更具挑战性。

您需要有一种方法来确保明天不是新的月份/年份。我曾经在一个方便的项目上工作,所以我建立了那个项目,但是我编写的代码都留给了客户。我似乎记得,每个月都有天数的数组,而我并没有为I年而烦恼。如果您要点击的日期不是今天,那么您将需要一些if语句来检查:“是一年的最后一天吗?” ,它是一个月的最后一天吗?”,然后按相应的按钮到达选择这些日期的位置(那些向上箭头和向下箭头)。抱歉,我没有相应的示例代码。

这也许不是您想要的现成的解决方案。使用日历和Nightwatch时找不到日期选择器模块。也许您会很幸运,并且有人建立并共享了一个...

相关问题