#json #selenium #selenium-webdriver #selenium-chromedriver #desiredcapabilities
#json #selenium #selenium-webdriver #selenium-chromedriver #желаемые возможности
Вопрос:
Я использовал свой собственный код для запуска драйвера, поэтому использовал приведенный ниже код для установки каталога загрузки по умолчанию
DesiredCapabilities caps = DesiredCapabilities.chrome();
ChromeOptions co = new ChromeOptions();
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("download.default_directory", System.getProperty("user.dir") "\downloads\); -------------Dynamic Path
co.setExperimentalOption("prefs", chromePrefs);
capabilities.merge(co);
WebDriver driver = new ChromeDriver(caps);
Теперь наша организация предоставила внутреннюю платформу, которая использует их встроенный драйвер. Единственный способ установить возможности — через профиль JSON.
{
"capabilities": {
"browserName": "chrome",
"browserVersion": "81",
"chromeOptions": {
"args": [
"--headless"
"--start-maximized"
]
}
"prefs": {
"profile.default_content_settings.popups": 0,
"download.default_directory": "C:Usersworkspaceprojectdownloads" -------------Path is Static
},
}
}
Жестко заданный путь загрузки и изменение вручную на каждой машине, которую я запускаю. Есть ли какой-либо способ сделать этот путь динамическим, таким же, как указано выше?
Комментарии:
1. Где именно вы застряли? Что происходит, когда вы запускаете код на разных компьютерах? Что именно вы пытаетесь сделать?
2. Я думаю, вам следует обратиться в службу поддержки этого внутреннего фреймворка, поскольку никто не может знать его специфику.
3. @DebanjanB Каталог проекта может отличаться на каждом компьютере. ИТАК, мне нужно сделать этот путь динамическим. т. Е. Нужно установить его как каталог проекта вместо передачи статического пути.
Ответ №1:
У меня была аналогичная проблема при попытке передать относительный путь к моему firefox.opions. Поскольку кажется, что он принимает только абсолютные пути, я выбрал обходной путь:
Я преобразовал свой относительный путь в абсолютный, а затем передал его с параметрами Firefox в настройки браузера:
/* downloadPath=./src/test/resources/downloads -->from properties */
File directory = new File(downloadPath);
String absoluteDwnldPath = directory.getAbsolutePath();
позже:
options.addPreference("browser.download.dir", absoluteDwnldPath);
options.addPreference("browser.download.useDownloadDir", true);
Теперь о вашей проблеме:
Сделайте путь в файле json относительным, например «./downloads», а затем напишите код, чтобы получить абсолютный путь внутри, как указано выше, и впоследствии передайте параметр в настройки Chrome.
Если вы предоставляете свое программное обеспечение для тестирования, кажется, что внутри вашего проекта всегда есть каталог downloads, поэтому его всегда нужно найти.