Как выбрать дату из календаря выбора даты в ночной системе javascript автоматизация? - PullRequest
1 голос
/ 16 апреля 2020

Я хочу выбрать дату из средства выбора даты, эта дата не является c, то есть, выбирая тот же день, она должна иметь динамический характер c. т.е. должен иметь возможность выбрать любую прошедшую дату, включая сегодняшнюю.

Проблема: После нажатия на поле я получаю этот календарь, из календаря я должен выбрать дату. как это сделать? предпочтительнее в Nightwatch js.

enter image description here

1 Ответ

0 голосов
/ 18 апреля 2020

Это очень нетривиальный вопрос. Я не знаю ни одного «готового» решения, которое можно просто подключить к 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 или иным образом сделайте его доступным для вашего базового тестового класса. js

Это гораздо проще сделать, если вы всегда хотите выбрать сегодня. Вы захотите использовать селекторы xpath, чтобы выбрать день, который вы хотите щелкнуть.

Вы будете использовать XPATH для нажатия на дату, например, скажем, вы нажмете //*[.='16 '], где 16 - это дата сегодня.

Если, скажем, вы хотите выбрать завтрашний день в календаре, то все становится более сложным.

Вы должны иметь способ убедиться, что завтра не новый месяц / год. Однажды я работал над проектом, где это пригодилось, поэтому я его создал, но весь код, который я написал, остался с клиентом. Кажется, я вспоминаю, что для каждого месяца существовал массив с количеством дней в году, и я не удосужился найти решение для високосного года. В тех случаях, когда вы нажимаете на любой день, который не СЕГОДНЯ, вам понадобятся некоторые if заявления, которые проверяют, "это последний день года?" и это последний день месяца? "и нажмите соответствующую кнопку, чтобы добраться до места, где выберите эти даты (стрелки вверх и вниз). Извините, у меня нет примера кода для этого.

Возможно, это не готовое решение, которое вам нужно. Мне не удалось найти модуль выбора даты, когда я работал с календарями и Nightwatch. Возможно, вам повезет, и кто-то создал и поделился им ... .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...