我正在尝试使用Chrome浏览器中的TestNg XML并行运行LeanFT测试。
它运行正常,但它会在同一浏览器中打开每个测试会话,导致登录和注销的cookie出现问题。
示例:
我正在使用parallel="tests" thread-count="2"
和来自TestNG XML的测试
使用
public Browser getbrowser() {
Browser browser = null;
browser = BrowserFactory.launch(BrowserType.CHROME);
browser.clearCache();
return browser;
}
因此,每次我从TestNG XML并行运行测试时,所有测试都会在同一浏览器中打开导致cookie问题,因为我在browser.clearCache()
方法中getbrowser()
。
我希望与每个线程并行运行LeanFT测试,打开Chrome窗口的新实例并在同一台机器上并行运行。
如果有人在同一台机器上实现了LeanFT的并行执行,请分享。
答案 0 :(得分:0)
当您使用BrowserFactory.launch
时,在幕后它有点像运行
chrome about:blank
。您可以尝试在命令行/终端中执行此操作,并且您将在第一次看到新窗口时打开,但是第二次,第三次等等,它将表示打开的窗口中的新选项卡
这是特定于浏览器的行为。果然,firefox与命令行不同,毫无疑问,.launch
也会在firefox上打开一个新的窗口。
要在Chrome中打开新窗口,需要--new-window
开关。 LeanFT还没有做好准备(还),你必须自己运行命令。
chrome --new-window www.google.com
我确定你知道如何从Java开始一个过程,但为了完整答案,我在how to start a process from 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());
<强>等强>