作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在多个浏览器中使用不同的登录并行执行 testng.xml。现在我使用 ThreadLocal 概念,并使用它我可以与单个浏览器(例如 5 个 chrome 驱动程序实例)并行执行 testng.xml。
我想对 IE、firefox、chrome 和 EDGE 等不同的浏览器执行相同的操作。这是我的示例代码。
BaseSetup.class:
public ThreadLocal<WebDriver> driver = new ThreadLocal<WebDriver>()
{
@Override
protected WebDriver initialValue()
{
if (browser.equalsIgnoreCase("Firefox")) {
System.setProperty("webdriver.gecko.driver", "D:/Softwares/Selenium/Drivers/Firefox driver/geckodriver.exe");
return new FirefoxDriver(getFirefoxOptions());
} else if (browser.equalsIgnoreCase("Chrome")) {
return new ChromeDriver(getChromeOptions());
} else if (browser.equalsIgnoreCase("InternetExplorer")) {
return new InternetExplorerDriver(getInternetExplorerOptions());
} else if(browser.equalsIgnoreCase("EDGE")){
return new EdgeDriver(getEdgeOptions());
}
}
};
TestNGSuiteRunner.class:
public static void main(String[] args) throws Exception
{
ArrayList<Thread> trarrls = new ArrayList<Thread>();
Thread object1 = null;
try
{
inputFiles = args[0];
xmlFile = inputFiles.split(",");
for(String file : xmlFile)
{
object1 = new Thread(new
TestNGParallelConfig(System.getProperty("user.dir")+"/"+file));
object1.start();
trarrls.add(object1);
Thread.sleep(3000);
}
for(Thread indi_thread:trarrls){
indi_thread.join();
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally{
System.exit(0);
}
}
TestNGParallelConfig.class:
public TestNGParallelConfig(String suitXMLUrl,int portNo) throws InterruptedException
{
xmlString = suitXMLUrl;
xmlIndex = xmlString.lastIndexOf("/");
locationName = xmlString.substring(xmlIndex+1);
folderName = locationName.replace(".xml", "").toUpperCase();
Thread.sleep(5000);
//BaseSetup.getInstance().proxyPortNo = portAvailability(portNo);
}
@Override
public void run(){
List<String> testSuites = Lists.newArrayList();
testSuites.add(xmlString);
TestNG testng = new TestNG();
testng.setTestSuites(testSuites);
testng.run();
}
最主要的是,如果一个xml要在5个不同的浏览器中运行,就需要5个不同的用户。由于该应用程序完全基于登录和注销。
请帮助我实现这一目标。
最佳答案
尝试 Selenium Grid,Testng.xml 一次在一种浏览器类型上运行。多个浏览器需要浏览器的多次执行或类级别声明,这限制了单个浏览器类型中的一组特定测试用例。如果您想在所有浏览器类型中执行所有测试用例,那么 Selenium Grid 是最好的选择。
关于java - 如何在多个浏览器中使用不同的登录并行执行 TestNG.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51536319/
我是一名优秀的程序员,十分优秀!