Hi everyone,
A little introduction to my problem. I am trying to test a web application using katalon studio and to access the website I have to use an SSL certificate. In Firefox, I launch a specific profile with the certificate preloaded and for chrome I have the certificate in my keychain. If I select a headless browser (FF or chrome) from the run button in Katalon, the website I am trying to access will not be loaded as I need my certificate. Now I want to be able to perform headless execution of my browser so to do this in Firefox, I use the following code:
> WebUIDriverType executedBrowser = DriverFactory.getExecutedBrowser()
> switch(executedBrowser) {
> case WebUIDriverType.FIREFOX_DRIVER: // "Firefox"
> ProfilesIni profile = new ProfilesIni();
> FirefoxProfile FF = profile.getProfile("AutomationTesting");
> FirefoxBinary firefoxBinary = new FirefoxBinary();
> firefoxBinary.addCommandLineOptions("--headless");
> FirefoxOptions firefoxOptions = new FirefoxOptions().setProfile(FF);
> firefoxOptions.setBinary(firefoxBinary);
> System.setProperty('webdriver.gecko.driver', DriverFactory.getGeckoDriverPath())
> WebDriver driver = new FirefoxDriver(firefoxOptions);
> DriverFactory.changeWebDriver(driver)
> break
This code allows me to open a specific profile of Firefox in headless mode. I was trying to do something similar in Chrome: I wanted to open my website using the certificate I have in my keychain but simply running my tests with Chrome Headless does not work. So, I tried the following code:
> case WebUIDriverType.CHROME_DRIVER:
> path = "#the-path-to-my-driver-goes-here#"
> //System.setProperty('webdriver.chrome.driver', DriverFactory.getChromeDriverPath())
> System.setProperty('webdriver.chrome.driver', path)
> ChromeOptions opt = new ChromeOptions()
> //opt.setHeadless(true)
> opt.addArguments("--headless")
> WebDriver driver = new ChromeDriver(opt)
> DriverFactory.changeWebDriver(driver)
> break
> }
Now the code above executes, but not as intended. It will open a Chrome browser but just in regular GUI mode, no headless execution occurs. I have tried both the opt.setHeadless(true) and the opt.addArguments(“–headless”), but both give me the same result.
If anyone knows of a way to get past this issue or have any suggestions please let me know. Thanks for your time!
FYI, I have the following WebDriver imports:
import org.openqa.selenium.WebDriver
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.chrome.ChromeOptions
import org.openqa.selenium.chrome.ChromeBinary
import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.firefox.FirefoxBinary;
import org.openqa.selenium.firefox.FirefoxOptions
import org.openqa.selenium.firefox.FirefoxProfile
import org.openqa.selenium.firefox.internal.ProfilesIni
import com.kms.katalon.core.webui.driver.DriverFactory
import com.kms.katalon.core.webui.driver.WebUIDriverType