Как настроить каталог загрузки для Google Chrome с помощью Selenium (NodeJS)? - PullRequest
2 голосов
/ 24 марта 2020

У меня есть тест в NodeJS, который загружает файл с веб-сайта, используя Google Chrome в облаке (BrowserStack). Я пытаюсь загрузить файл в каталог моего проекта. Я понимаю, что должен установить это через Chrome Опции, но здесь нет ответов, чтобы показаться работающим.

Не могли бы вы поделиться примером, как это делается с помощью NodeJS? Ниже приведен пример, который я пробовал, который не работает.

module.exports.createChromeDriver = async function () {
    if (parameters.runOnCloud === true) {

        await filesDirectory.createAppDirIfRequired(paths.tempDir, paths.downloadDirName);

        let capabilities = {
            'name' : parameters.report,
            'browserName' : 'Chrome',
            'browser_version' : '79.0',
            'os' : 'OS X',
            'os_version' : 'Mojave',
            'resolution' : '1920x1080',
            'browserstack.user' : credentials.browserstack.user,
            'browserstack.key' : credentials.browserstack.key,
            'browserstack.local' : 'true',
            'browserstack.localIdentifier': parameters.bsLocalIdentifier,
            'browserstack.networkLogs' : 'false',
        }

        if (parameters.tests === "wallet-web") {
            capabilities['browserstack.networkLogs'] = 'true';
        }

        let options = new chrome.Options();
        const prefs = {'download.default_directory' : paths.downloadsDir};
        options.addArguments('prefs', prefs);
        options.merge(capabilities);

        let driver = await new Builder().
            usingServer('http://hub-cloud.browserstack.com/wd/hub').
            withCapabilities(capabilities).
            build();

        return driver;
    }

1 Ответ

1 голос
/ 26 марта 2020

У вас ошибка при настройке возможностей. capabilities не включает опцию download, потому что оператор merge (options.merge(capabilities);) означает, объединить capabilities в options.

Вам нужно изменить только одну строку:

withCapabilities(capabilities).

до

withCapabilities(options.toCapabilities()).

Если она не работает, я думаю, вам нужно изменить переменную option, например:

const options = new chrome.Options();
options.setUserPreferences({
  'download.default_directory': paths.downloadsDir,
  'download.prompt_for_download': false, // Maybe
});
options.merge(capabilities);

Обновление:

Последний способ, вы можете попробовать использовать

capabilities['goog:chromeOptions'] = options;

вместо

options.merge(capabilities);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...