Как установить каталог загрузки по умолчанию в возможностях selenium Chrome?
пожалуйста, найдите ниже код с возможностями chrome. На самом деле браузер не загружает файл по указанному пути.
private static DesiredCapabilities getChromeCapabilities() throws Exception {
String chromePath = BrowserUtil.class.getResource("/Browserdrivers/chromedriver.exe").getPath();
System.setProperty("webdriver.chrome.driver", chromePath);
String downloadFilepath = "C:TestDownloads";
ChromeOptions options = new ChromeOptions();
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", downloadFilepath);
options.setExperimentalOption("prefs", chromePrefs);
options.addArguments("--test-type");
options.addArguments("start-maximized", "disable-popup-blocking");
DesiredCapabilities chromeCapabilities = DesiredCapabilities.chrome();
setProxy(chromeCapabilities);
chromeCapabilities.setPlatform(Platform.WINDOWS);
chromeCapabilities.setCapability("name", MDC.get("testname"));
chromeCapabilities.setCapability(ChromeOptions.CAPABILITY, options);
return chromeCapabilities;
}
5 ответов
для Chromedriver попробуйте с:
String downloadFilepath = "/path/to/download";
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", downloadFilepath);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", chromePrefs);
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cap.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new ChromeDriver(cap);
Примечание: - В windows вам нужно использовать \\ для пути, а если вы используете linux или mac, то используйте //
надеюсь, что это помогает. :)
ans, которые помогают мне решить эту проблему в windows (https://bugs.chromium.org/p/chromedriver/issues/detail?id=783).
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", System.getProperty("user.dir")+ File.separator + "externalFiles" + File.separator + "downloadFiles");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", prefs);
ChromeDriver driver = new ChromeDriver(options);
для драйвера Chrome, приведенный ниже код работает для меня
String downloadFilepath = "/path/to/download";
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", downloadFilepath);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", chromePrefs);
WebDriver driver = new ChromeDriver(options);
чтобы сделать его более чистым и легким, я разработал библиотека что позволяет создавать объект ChromeOptions, который содержит папку Загрузки в одной строке. Например, чтобы определить "/ tmp / downloads", используйте:
private SeleniumDownloadKPI seleniumDownloadKPI;
@BeforeEach
void setUpTest() {
// New instance of SeleniumDownloadKPI with given download folder.
seleniumDownloadKPI =
new SeleniumDownloadKPI("/tmp/downloads");
ChromeOptions chromeOptions =
seleniumDownloadKPI.generateDownloadFolderCapability();
driver = new ChromeDriver(chromeOptions);
на библиотека также содержит методы, которые позволяют получать KPI загрузки и выполнять утверждение.
для пользователей Python, которые видят эту страницу -- вот как я устанавливаю каталог загрузки в Python Selenium (это только версия Python принятого ответа Shubham):
def newChromeBrowser(headless=True, downloadPath=None):
""" Helper function that creates a new Selenium browser """
options = webdriver.ChromeOptions()
if headless:
options.add_argument('headless')
if downloadPath is not None:
prefs = {}
os.makedirs(downloadPath)
prefs["profile.default_content_settings.popups"]=0
prefs["download.default_directory"]=downloadPath
options.add_experimental_option("prefs", prefs)
browser = webdriver.Chrome(chrome_options=options, executable_path=CHROMEDRIVER_PATH)
return browser