如何 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 小时交货
所以我试图用量角器解决一个我几乎没有选择的解决方案。我希望能够测试 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 小时交货