【发布时间】:2020-08-14 00:02:08
【问题描述】:
我目前正在同步运行 selenium 测试,该测试从数组中为 sendkeys 函数获取不同的值。我以 35 秒的超时时间运行它,因为测试大约需要 25 秒才能完成。订单数组中有 80 多个输入对我来说并不常见。
我确实有另一个测试,我使用一定数量的输入 (8) 运行,我可以在异步函数中使用 await 运行,所以我想知道是否有更好的方法让我运行这些测试返回- 使用承诺以及我如何能够实现这一点。我已经尝试将 map 与 promise.all 一起使用,但这会尝试一次运行所有测试,但我希望它们一次运行一个。
任何帮助将不胜感激!
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();
}
}
【问题讨论】:
标签: node.js selenium selenium-webdriver selenium-chromedriver