如何 select 根据参数更正值?

How to select correct value depending on params?

所以我试图用量角器解决一个我几乎没有选择的解决方案。我希望能够测试 1600、1900 和 else 语句之间的时隙。

如果我们 select 1600 那么我们显然会做 1600 元素等等

当我开始我的代码时,它会执行以下代码:

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 并选择正确的元素?

执行此操作的最佳方法是将一个值传递给 truckLateDelivery() 函数,然后在其中包含一个 if 语句。例如

    async truckLateDelivery(timeslot) {
        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);

        if(timeslot = 1600)
        {
          //Click Late Delivery
          await utils.elementToBeClickable(timeslot);
          await utils.click(timeslot);
        }
        else
        {
          //Click late hour checkbox
          await utils.elementToBeClickable(lateDelivery);
          await utils.click(lateDelivery);
        } 
    }

然后当您调用 truckLateDelivery() 时,就像
一样调用它 await servicesPage.truckLateDelivery(1600); 延迟交货
await servicesPage.truckLateDelivery(1900); 延迟 1 小时交货