web-dev-qa-db-ja.com

Seleniumでデフォルトのダウンロードディレクトリを設定する方法Chrome Capabilities?

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;
}
14
vini007

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を使用している場合は//を使用します

お役に立てれば。 :)

26
Shubham Jain

Windowsでこの問題を解決するのに役立つans( https://bugs.chromium.org/p/chromedriver/issues/detail?id=78 )。

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);
8
Darshan Shah

このページを見るPythonユーザーの場合-Python Seleniumでダウンロードディレクトリを設定する方法は次のとおりです(これは、Shubhamの受け入れられた答えのPythonバージョンにすぎません)。

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
2
Luke

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);
2
Bachan Joseph

よりクリーンで簡単にするために、ダウンロードフォルダーを1行で含むChromeOptionsオブジェクトを生成できる library を開発しました。たとえば、「/ 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);

library には、ダウンロードKPIを受信して​​アサーションを実行できるメソッドも含まれています。

0
AutomatedOwl