Skip to content
This repository was archived by the owner on Feb 2, 2025. It is now read-only.

Commit 6d1149a

Browse files
authored
Merge pull request #44 from Hi-Fi/fixChromeOptions
Fixed Chrome options parsing to really use given values
2 parents 2f05ed0 + 7cb6ab9 commit 6d1149a

File tree

2 files changed

+28
-14
lines changed

2 files changed

+28
-14
lines changed

src/main/java/com/github/markusbernhardt/seleniumlibrary/keywords/BrowserManagement.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.net.MalformedURLException;
1010
import java.net.URL;
1111
import java.net.UnknownHostException;
12+
import java.util.ArrayList;
1213
import java.util.HashMap;
1314
import java.util.Iterator;
1415
import java.util.List;
@@ -780,19 +781,20 @@ protected void parseBrowserOptionsChrome(String browserOptions, Capabilities des
780781
if (browserOptions != null && !"NONE".equalsIgnoreCase(browserOptions)) {
781782
JSONObject jsonObject = (JSONObject) JSONValue.parse(browserOptions);
782783
if (jsonObject != null) {
783-
Map<String, Object> chromeOptions = new HashMap<String, Object>();
784-
Iterator<?> iterator = jsonObject.entrySet().iterator();
785-
while (iterator.hasNext()) {
786-
Entry<?, ?> entry = (Entry<?, ?>) iterator.next();
787-
String key = entry.getKey().toString();
788-
logging.debug(String.format("Adding property: %s with value: %s (type: %s)",
789-
key.toString(), entry.getValue(), entry.getValue().getClass()));
790-
chromeOptions.put(key, entry.getValue());
784+
List<String> args = new ArrayList<>();
785+
for (Object arg : (JSONArray)jsonObject.get("args")) {
786+
args.add("--"+arg.toString().replace("--", ""));
787+
}
788+
((ChromeOptions) desiredCapabilities).addArguments(args);
789+
List<File> extensions = new ArrayList<>();
790+
for (Object extension : (JSONArray)jsonObject.get("extensions")) {
791+
extensions.add(new File(extension.toString().toString().replace('/', File.separatorChar)));
791792
}
792-
((ChromeOptions) desiredCapabilities).setCapability(ChromeOptions.CAPABILITY, chromeOptions);
793-
if (browserOptions.contains("disable-extensions")) {
794-
((ChromeOptions) desiredCapabilities).setExperimentalOption("useAutomationExtension", false);
795-
}
793+
((ChromeOptions) desiredCapabilities).addExtensions(extensions);
794+
((ChromeOptions) desiredCapabilities).setExperimentalOption("prefs", jsonObject.get("prefs"));
795+
if (browserOptions.contains("disable-extensions")) {
796+
((ChromeOptions) desiredCapabilities).setExperimentalOption("useAutomationExtension", false);
797+
}
796798
} else {
797799
logging.warn("Invalid browserOptions: " + browserOptions);
798800
}

src/test/java/com/github/markusbernhardt/seleniumlibrary/keywords/BrowserManagementTest.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,20 @@ public void testCreateDesiredCapabilitiesForHtmlUnit() {
7171
@Test
7272
public void parseChromeBrowserOptions() {
7373
ChromeOptions chromeOptions = new ChromeOptions();
74-
String browserOptions = "{\"args\":[\"start-maximized\"],\"extensions\":[],\"prefs\":{\"intl.accept_languages\":\"de-AT\"}}";
74+
String browserOptions = "{\"args\":[\"start-maximized\"],\"extensions\":[],\"prefs\":{\"intl.accept_languages\":\"de-AT\", \"intl.charset_default\":\"UTF-8\"}}";
7575
bm.parseBrowserOptionsChrome(browserOptions, chromeOptions);
76-
assertTrue(chromeOptions.getCapability("goog:chromeOptions").toString().contains("de-AT"));
76+
assertTrue(chromeOptions.asMap().toString().contains("--start-maximized"));
77+
assertTrue(chromeOptions.asMap().toString().contains("UTF-8"));
78+
}
79+
80+
@Test
81+
public void parseChromeCapabilities() {
82+
ChromeOptions chromeOptions = new ChromeOptions();
83+
String browserName = "googlechromeheadless";
84+
String browserOptions = "{\"args\":[\"start-maximized\"],\"extensions\":[],\"prefs\":{\"intl.accept_languages\":\"de-AT\"}}";
85+
String desiredCapabilitiesString = "{}";
86+
Capabilities cap = bm.createCapabilities(browserName, desiredCapabilitiesString, browserOptions);
87+
assertTrue(cap.asMap().toString().contains("--start-maximized"));
88+
assertTrue(cap.asMap().toString().contains("--headless"));
7789
}
7890
}

0 commit comments

Comments
 (0)