testng - 使用 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 的并行执行,请分享。
解决方案
使用时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
启动过程:
chrome --new-window https://www.google.com/search?q=dummy1
使用说明:
BrowserFactory.attach(new BrowserDescription.Builder().title("dummy1 - Google Search").build());
窗口 2
启动过程:
chrome --new-window https://www.google.com/search?q=dummy2
使用说明:
BrowserFactory.attach(new BrowserDescription.Builder().title("dummy2 - Google Search").build());
等等
推荐阅读
- r - 有条件的 fileInput 上传器来计算 Shiny 中的文件数
- java - java - 缓慢的计算处理
- c - 在 MacOs 中编译 ed25519-donna 的问题
- javascript - javascript中的重定向在iOS设备上不起作用
- javascript - 静态方法中的 setState
- angular - 使用 Angular 6 解析时打印的变量未定义
- selenium - QAF - 想在每次测试时打开和关闭浏览器
- mongodb - Strapi:如何在项目之间复制 API?
- excel - 空闲计时器未触发操作
- php - 如何将数组存储在 Wordpress 自定义字段中?