【问题标题】:How to run multiple selenium/webdriverjs tests with different inputs in Nodejs如何在 Nodejs 中使用不同的输入运行多个 selenium/webdriverjs 测试
【发布时间】: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


    【解决方案1】:

    想通了,你可以在 for 循环中使用 await。

    runLoop = async () => {
      for (let i = 0; i < orders.length; i++) {
        await test(orders[i]);
      }
    };
    runLoop();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 2011-03-20
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      相关资源
      最近更新 更多