Итак, я пытаюсь решить проблему с транспортиром, где у меня мало вариантов. Я хочу иметь возможность тестировать временные интервалы между 1600, 1900 и оператором else.
Если мы выберем 1600, тогда мы, очевидно, сделаем элемент 1600 и et c et c.
Когда я запускаю свой код, он выполняет код:
npm run e2e.js --params.tiemslot.t1600
это также может быть t1900 или никаких параметров вообще.
Тестовые примеры следующие :
const utils = require("../utils/utils");
const ServicesPage = require("../objects/servicesPage.obj");
describe("Services page", function () {
servicesPage = new ServicesPage();
if (browser.params.timeslot.t1600) {
it("Has truck and choose 1600 timeslot delivery",
async function () {
const nextStep = servicesPage.getForm().buttons.nextStep;
await servicesPage.truckLateDelivery();
await utils.elementToBeClickable(nextStep);
await utils.click(nextStep);
})
}
else if (browser.params.timeslot.t1900) {
it("Has truck and choose 1900 delivery",
async function () {
const nextStep = servicesPage.getForm().buttons.nextStep;
await servicesPage.truckLateDelivery();
await utils.elementToBeClickable(nextStep);
await utils.click(nextStep);
})
}
else {
it("Has truck and choose latest delivery",
async function () {
const nextStep = servicesPage.getForm().buttons.nextStep;
await servicesPage.chooseLatestDelivery();
await utils.elementToBeClickable(nextStep);
await utils.click(nextStep);
})
}
});
, и мой объектный скрипт
const utils = require("../utils/utils");
const servicesPage = require("../specs/servicesPage.specs");
module.exports = class DetailsPage {
constructor() {
const _buttons = {
nextStep: servicesPage.nextStepButton,
lateDelivery: servicesPage.lateDeliveryCheckbox,
truck: servicesPage.truckButton,
timeSlotAll: servicesPage.timeslotAll,
timeSlot1600: servicesPage.timeSlot1600,
timeSlot1900: servicesPage.timeSlot1900,
};
this.getFormButtons = function () {
return _buttons;
};
}
getForm() {
return {
buttons: this.getFormButtons()
};
}
async truckLateDelivery() {
const truckButton = this.getForm().buttons.truck;
const lateDelivery = this.getForm().buttons.lateDelivery;
const timeslot = this.getForm().buttons.timeSlot1600;
//Choose Truck
await utils.elementToBeClickable(truckButton);
await utils.click(truckButton);
//Click Late Delivery
await utils.elementToBeClickable(timeslot);
await utils.click(timeslot);
//Click late hour checkbox
await utils.elementToBeClickable(lateDelivery);
await utils.click(lateDelivery);
}
async chooseLatestDelivery() {
const truckButton = this.getForm().buttons.truck;
const lateDelivery = this.getForm().buttons.lateDelivery;
const timeSlots = this.getForm().buttons.timeSlotAll;
//Choose Truck
await utils.elementToBeClickable(truckButton);
await utils.click(truckButton);
//check if timeslots are avaliable
await utils.presenceOf(timeSlots);
const countElement = await timeSlots.count();
console.log(`Found ${countElement} timeslots buttons`);
//Choose last timeslot
await utils.elementToBeClickable(timeSlots.last());
await utils.click(timeSlots.last());
//Click on checkbox
await utils.elementToBeClickable(lateDelivery);
await utils.click(lateDelivery);
}
};
, и моя проблема в том, что мне нужно как-то дать значение async truckLateDelivery() {
, чтобы знать, чтобы запустить t1600 или t1900 в основном, и я не уверен, как я могу это сделать? Потому что, как вы можете видеть, у меня есть функция _buttons
, которая имеет правильные элементы, и у меня есть функция truckLateDelivery()
, которая обрабатывает тесты.
Поэтому мой вопрос состоит в том, как я могу сообщить тестовому примеру, если я хотите запустить npm run e2e.js --params.tiemslot.t1600
, чтобы запустить t1600, и если я напишу npm run e2e.js --params.tiemslot.t1900
, чтобы запустить t1900 и выбрать правильный элемент?