В настоящее время я пытаюсь использовать портативные браузеры с Selenium, если у пользователя не установлен браузер.
Для инициализации Chrome WebDriver я использую следующий код ( сокращенный ):
System.setProperty("webdriver.chrome.driver", "path/to/webdriver.exe");
ChromeOptions driverOptions = new ChromeOptions();
driverOptions.setExperimentalOption("useAutomationExtension", false);
driverOptions.addArguments("--no-sandbox");
driverOptions.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT);
driverOptions.setCapability(CapabilityType.UNHANDLED_PROMPT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT);
driverOptions.setBinary("path/to/portableBrowser.exe");
driver = new ChromeDriver(driverOptions);
driver.get("https://www.example.org");
Портативный браузер, который я использовал, можно найти здесь .
Теперь, когда я запускал тест, появилось окно cmd со следующимсообщение об ошибке:
[13652:11260:1107/122218.579:ERROR:configuration_policy_handler_list.cc(90)] Unknown policy: MediaCacheSize
[13652:11260:1107/122218.748:ERROR:configuration_policy_handler_list.cc(90)] Unknown policy: MediaCacheSize```
Я проверил политику портативного браузера на chrome://policy
и нашел следующий вывод (переводы красного цвета): Click me
Затем я добавил еще один аргумент в driverOptions
:
driverOptions.addArguments("--media-cache-size=someValue");
Просто для целей тестирования я использовал существующий профиль пользователя из установленного Chrome вместо временного. Но это тоже не сработало:
driverOptions.addArguments("--user-data-dir=C:/Users/username/AppData/Local/Google/Chrome/User Data");
Насколько я знаю, эти политики хранятся в реестре или как переменные среды, но так как портативный браузер должен работать в любой системе из коробки, яне могу изменить его.
Мой вопрос: Каким будет обходной путь или (еще лучше) возможное решение вместо обходного пути?