Как установить свойство каталога динамической загрузки по умолчанию для ChromeDriver через JSON?

#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, поэтому его всегда нужно найти.