Is there a way to get the current browser name of each thread running using Selenide?
I integrated TestNG Cucumber with multiple browsers.
So I need to know at @After hook, which browser is running the test.
And based on browser do some stuff.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" thread-count="8" parallel="tests" >
<test name="ChromeTest">
<parameter name="browser" value="chrome" />
<classes>
<class name="com.site.runner.TestRunner">
</class>
</classes>
</test>
<test name="FirefoxTest">
<parameter name="browser" value="firefox" />
<classes>
<class name="com.site.runner.TestRunner">
</class>
</classes>
</test>
<test name="SafariTest">
<parameter name="browser" value="safari" />
<classes>
<class name="com.site.runner.TestRunner">
</class>
</classes>
</test>
</suite>
Selenide set driver
public static synchronized void setDriver(String browser) {
setBrowser(browser);
}
public String setBrowser(String browser){
switch(browser){
case "chrome":
return setCapabilities(browser);
case "firefox":
return Configuration.browser = "firefox";
case "edge":
return Configuration.browser = "edge";
default:
return "No Browser found";
}
public static void directToBrowserUrl(String browserUrl) {
open(browserUrl);
}
Get the capabilities
and current thread
of the driver
in @After
method.
Code:
Capabilities capabilities = ((RemoteWebDriver) driver).getCapabilities();
String browserName = capabilities.getBrowserName();
String threadName = Thread.currentThread().getName();
long threadId = Thread.currentThread().getId();
System.out.println("Thread name & browser name: "+threadName +" --> "+browserName);
System.out.println("Thread id & browser name: "+threadId +" --> "+browserName);
if(browserName.equalsIngnoreCase("Chrome"){
//do your stuff
}
Output:
Thread name & browser name: com.CallerScript.Caller.main() --> chrome
Thread id & browser name: 16 --> chrome