首页 > 解决方案 > 使用 testng xml 并行运行 LeanFT 测试

问题描述

我正在尝试在 Chrome 浏览器中使用 TestNg XML 并行运行 LeanFT 测试。

它运行良好,但它在同一个浏览器中打开每个测试会话,导致登录和注销 cookie 出现问题。

例子:

我正在使用 TestNG XML 运行测试,parallel="tests" thread-count="2"并使用 LeanFT 启动浏览器

public Browser getbrowser() {
  Browser browser = null;
  browser = BrowserFactory.launch(BrowserType.CHROME);
  browser.clearCache();
  return browser;
}

因此,每次我从 TestNG XML 并行运行测试时,所有测试都会在同一个浏览器中打开,导致 cookie 问题,就像我browser.clearCache()getbrowser()方法中所做的那样。

我想在每个线程打开 Chrome 窗口的新实例并在同一台机器上并行运行的情况下并行运行 LeanFT 测试。

如果有人在同一台机器上实现了 LeanFT 的并行执行,请分享。

标签: testngleanft

解决方案


使用时BrowserFactory.launch,在幕后有点像跑步

chrome about:blank

从命令行。您可以尝试在命令行/终端中执行此操作,您会看到第一次会打开一个新窗口,但第二次、第三次等则意味着打开的窗口中有一个新选项卡。

这是浏览器特定的行为。果然,firefox 与命令行不同,难怪,.launch也从leaft 打开了一个新的 firefox 窗口。

要在 chrome 中打开一个新窗口,--new-window需要一个开关。LeanFT 还没有为此做好准备,您必须自己运行命令。

chrome --new-window www.google.com

我确定您知道如何从 Java 启动进程,但是为了完整回答我的答案,以下是如何从 java 启动进程。本质上:

Process myProcess = Runtime.getRuntime().exec(command);

然后使用BrowserFactory.attach, 附加到打开的窗口。

如果您必须运行多个实例,则需要唯一标识它们。每次增加一个变量时尝试打开新窗口,例如:https://www.google.com/search?q=dummy1

所以:

  1. 窗口 1

    启动过程:chrome --new-window https://www.google.com/search?q=dummy1

    使用说明:

    BrowserFactory.attach(new BrowserDescription.Builder().title("dummy1 - Google Search").build());
    
  2. 窗口 2

    启动过程:chrome --new-window https://www.google.com/search?q=dummy2

    使用说明:

    BrowserFactory.attach(new BrowserDescription.Builder().title("dummy2 - Google Search").build());
    
  3. 等等


推荐阅读