【问题标题】:How to send different data to each script running in parallel using NodeJS, Protractor, and Saucelabs?如何使用 NodeJS、Protractor 和 Saucelabs 向并行运行的每个脚本发送不同的数据?
【发布时间】:2021-09-27 16:07:12
【问题描述】:

我使用 NodeJS、Protractor、Jasmine Framework 和 SauceLabs 设置了多个自动化脚本。

每个脚本都在单独的 .JS 文件中,它从 .JSON 文件中读取数据。我在 JSON 文件中定义了登录凭据和所有其他必要数据。

multiCapabilities: [{
    browserName: 'chrome',
    version: 'latest',
    platform: 'Windows 8',
    name: "tests",
    splitTestsBetweenCapabilities: true,
    acceptInsecureCerts: true,
    cssSelectorsEnabled: true,
    shardTestFiles: true,
    maxInstances: 5,
}],
maxSessions: 5,

使用这个配置,我可以触发 5 个 Chrome 浏览器实例并运行 5 个不同的脚本,每个脚本都自己获取数据。

问题是我需要为每个脚本使用 20 个登录凭据的轮换列表。我不确定是否有任何软件包已经这样做了。

我应该如何处理这个问题,以便每个脚本都可以使用一个唯一的用户名和密码? 每个脚本都应该能够选择一个随机凭证,而其他脚本在该脚本完成其运行之前不能使用它。

【问题讨论】:

  • 您需要某种集中式存储。但是为什么你需要轮换这些登录呢?为什么每次运行都要使用不同的登录名来运行测试? ?这背后的原因是什么?由于量角器使用多个进程,因此很难在它们之间同步数据(这是很大的努力,但收益不大。)我不明白为什么你必须轮换。
  • 我可以想到将包含所有凭据的文件复制到 tmp 目录。然后,在测试中,您访问该文件并使用其中一个登录名。测试完成后,它会再次将使用过的登录名记录到文件中。为了同步它,可以试试这个 npm 包来锁定它:=> npmjs.com/package/lockfile ,所以在访问它时锁定文件,并在你的“readFile()”函数中添加一个适当的轮询机制,以防它在那一刻被锁定! .如果你愿意,我可以给你举个例子。,0
  • 另一种方法是通过 process.env 来实现,但我猜 mutlipleinstances 会产生不同的进程,因此子进程无法写入相同的 process.env --

标签: javascript node.js jasmine protractor saucelabs


【解决方案1】:

您可以使用单独的过程来更新 .json 文件中的数据,然后像往常一样触发脚本。

有像 json-update 这样的 npm 包可用,或者您可以构建自己的脚本以在您的脚本之前运行。

【讨论】:

  • 这与我最终做的类似。
猜你喜欢
  • 2018-10-10
  • 2017-10-27
  • 2018-06-17
  • 2021-03-08
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-30
相关资源
最近更新 更多