현재 배열에서 sendkeys 함수에 대해 다른 값을 사용하는 셀레늄 테스트를 동 기적으로 실행하고 있습니다. 테스트를 완료하는 데 약 25 초가 걸리기 때문에 35 초의 타임 아웃으로 실행하고 있습니다. 주문 배열에 80 개 이상의 입력이있는 것은 일반적이지 않습니다.
나는 비동기 함수에서 await를 사용하여 실행할 수있는 일정한 양의 입력 (8)으로 실행하는 또 다른 테스트가 있으므로 이러한 테스트를 연속적으로 실행하는 더 좋은 방법이 있는지 궁금합니다. 약속과 내가 그것을 달성 할 수있는 방법. promise.all과 함께 map을 사용해 보았지만 한 번에 테스트를 모두 실행하려고 시도하지만 한 번에 하나씩 실행하기를 원합니다.
어떤 도움이라도 대단히 감사하겠습니다!
const { webdriver, Builder, By, Key, Until } = require("selenium-webdriver");
const promise = require("selenium-webdriver").promise;
const orders = ["order1", "order2", "order3","order4"];
runLoop = async () => {
for (const order of orders) {
await new Promise((resolve) => setTimeout(resolve, 35000));
test(order);
}
};
runLoop();
async function test(order) {
let driver;
driver = await new Builder().forBrowser("chrome").build();
await driver.manage().window().maximize();
try {
await driver.get(
"https://myWebsite.com"
);
await driver
.findElement(
By.xpath(
'//*[@id="ctl00_BodyContent_OrderSearchForm1_txtSearchString"]'
)
)
.sendKeys(`${order}`);
}
// RUN TESTS WITH ORDER
catch (err) {
console.log(err);
}
finally {
await driver.quit();
}
}
알아 냈 으면 for 루프에서 await를 사용할 수 있습니다.
runLoop = async () => {
for (let i = 0; i < orders.length; i++) {
await test(orders[i]);
}
};
runLoop();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다