So ändern Sie den Speicherort für den Dateidownload in Webdriver, während Sie den Chrome-Treiber/Firefox-Treiber verwenden

Lesezeit: 5 Minuten

So andern Sie den Speicherort fur den Dateidownload in Webdriver
Shantanu Nandan

Ich versuche, ein Bild zu speichern, indem ich die Option “Speichern als” in einem bestimmten Ordner verwende. Ich habe eine Möglichkeit gefunden, mit der rechten Maustaste auf das Bild zu klicken, das ich mit der Option Speichern unter speichern möchte. Aber das Problem, bei dem ich feststecke, ist, dass ich nach dem Abrufen des Betriebssystemfensters, das fragt, wo die Datei gespeichert werden soll, nicht in der Lage bin, den gewünschten Speicherort zu senden, da ich nicht weiß, wie es geht. Ich bin die ähnlichen Fragen in diesem Forum durchgegangen, aber keine davon hat bisher geholfen.

Code ist-

Für Firefox-

public class practice {

 public void pic() throws AWTException{
     WebDriver driver;

     //Proxy Setting     
        FirefoxProfile profile = new FirefoxProfile();
        profile.setAssumeUntrustedCertificateIssuer(false);
        profile.setEnableNativeEvents(false);
        profile.setPreference("network.proxy.type", 1);
        profile.setPreference("network.proxy.http", "localHost");
        profile.setPreference("newtwork.proxy.http_port",3128);

        //Download setting
        profile.setPreference("browser.download.folderlist", 2);
        profile.setPreference("browser.helperapps.neverAsk.saveToDisk","jpeg");
        profile.setPreference("browser.download.dir", "C:\Users\Admin\Desktop\ScreenShot\pic.jpeg");
        driver = new FirefoxDriver(profile);

        driver.navigate().to("http://stackoverflow.com/users/2675355/shantanu");
        driver.findElement(By.xpath("//*[@id='large-user-info']/div[1]/div[1]/a/div/img"));
        Actions action = new Actions(driver);
        action.moveToElement(driver.findElement(By.xpath("//*[@id='large-user-info']/div[1]/div[1]/a/div/img"))).perform();
        action.contextClick().perform();
        Robot robo = new Robot();
        robo.keyPress(KeyEvent.VK_V);
        robo.keyRelease(KeyEvent.VK_V);
    // Here I am getting the os window but don't know how to send the desired location
    }//method   
}//class

Für Chrom-

public class practice {
   public void s() throws AWTException{
        WebDriver driver;   
        System.setProperty("webdriver.chrome.driver","C:\Users\Admin\Desktop\chromedriver.exe");
        driver = new ChromeDriver();
        driver.navigate().to("http://stackoverflow.com/users/2675355/shantanu");
        driver.findElement(By.xpath("//*[@id='large-user-info']/div[1]/div[1]/a/div/img"));
        Actions action = new Actions(driver);
        action.moveToElement(driver.findElement(By.xpath("//*[@id='large-user-info']/div[1]/div[1]/a/div/img"))).perform();
        action.contextClick().perform();
        Robot robo = new Robot();
        robo.keyPress(KeyEvent.VK_V);
        robo.keyRelease(KeyEvent.VK_V);
        // Here I am getting the os window but don't know how to send the desired location
   }
 }

Dies ist das Popup-Fenster, in dem ich feststecke

1641714541 26 So andern Sie den Speicherort fur den Dateidownload in Webdriver
Vivek Singh

Im Code laufen zwei Dinge schief.

Für Firefox:
Du musst einstellen

profile.setPreference("browser.download.dir", "C:\Users\Admin\Desktop\ScreenShot\");

nicht zu

profile.setPreference("browser.download.dir", "C:\Users\Admin\Desktop\ScreenShot\pic.jpeg");

zweitens legen Sie die Präferenz fest browser.download.folderlist, es ist browser.download.folderList (L-Kappen in Ordnerliste).

Sobald Sie beides erreicht haben, können Sie Ihre Roboterklasse verwenden, um die gewünschten Operationen durchzuführen.

Für Chromedriver ausprobieren mit:

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);

Hoffe das hilft. 🙂

  • Es funktioniert jetzt mit Firefox, aber wie geht das bei Verwendung des Chome-Treibers?

    – Shantanu Nandan

    8. Januar ’15 um 7:08

  • Kann ich dafür AutoIT verwenden? Ist es zwingend erforderlich, AutoIT mit TestNG zu verwenden oder kann ich es nur mit Selenium-Webtreiber verwenden?

    – Shantanu Nandan

    8. Januar ’15 um 8:38

  • AutoIT bis weit ist der beste Weg. Das Problem mit Robot ist, dass Sie Ihr System während der Ausführung einfrieren müssen. AutoIT behebt dieses Problem, aber während der Verwendung von AutoIT sollte das System nicht gesperrt werden.

    – Vivek Singh

    8. Januar ’15 um 8:41

  • und autoIt mit testng oder selenium webdriver? AutoIt wird als Process-Aufruf verwendet, hat also keine Beziehung zu Tests oder Selen.

    – Vivek Singh

    8. Januar ’15 um 8:44

  • Vielleicht möchten Sie File.separator für die Schrägstriche im Pfad verwenden?

    – Simon Baars

    11. Apr. ’17 um 11:45


Für Chrome-Browser:

Auch Sie können den Windows-Dialog (Speichern als Dialog) mit dem folgenden Code-Schnipsel deaktivieren. Sie müssen die folgenden Einstellungen in den Chromedriver-Einstellungen vornehmen:

  • Deaktivieren Sie die Download-Eingabeaufforderung, wenn sie angezeigt wird
  • Legen Sie das Standardverzeichnis zum Herunterladen der Datei fest
  • Wenn das PDF-Ansichts-Plugin aktiviert ist, das die PDF-Datei im Browser öffnet, können Sie dies deaktivieren, damit der Download automatisch starten kann
  • Akzeptieren Sie jedes Zertifikat im Browser

    String downloadFilepath = "/path/to/download/directory/";
    Map<String, Object> preferences = new Hashtable<String, Object>();
    preferences.put("profile.default_content_settings.popups", 0);
    preferences.put("download.prompt_for_download", "false");
    preferences.put("download.default_directory", downloadFilepath);
    
    // disable flash and the PDF viewer
    preferences.put("plugins.plugins_disabled", new String[]{
        "Adobe Flash Player", "Chrome PDF Viewer"});
    
    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("prefs", preferences);
    
    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    capabilities.setCapability(ChromeOptions.CAPABILITY, options);
    driver = new ChromeDriver(capabilities);
    

So andern Sie den Speicherort fur den Dateidownload in Webdriver
Yury Staravoitau

Ich habe viel Zeit damit verbracht, zu untersuchen, wie man eine PDF-Datei im Firefox-Browser herunterlädt, ohne dass das Popup-Erscheinen “Speichern unter” angezeigt wird. Es könnte jemandem helfen.

Nach einigen lokalen Recherchen, wie man herunterlädt pdf Datei in Firefox ohne Speichern unter-Popup habe ich die minimal erforderliche Einstellung im Firefox-Profil gefunden:

profile.setPreference("pdfjs.disabled", true);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");

Natürlich können Sie einige zusätzliche Einstellungen hinzufügen.

Es funktioniert in Firefox 45-46-Versionen.

Sie haben Ihre Frage teilweise selbst beantwortet:

Das Problem, bei dem ich feststecke, ist, nachdem ich das Betriebssystemfenster erhalten habe

Selen ist ein Browser Automatisierungstool – os Fenster ist kein Browser! Sie müssen etwas anderes verwenden. Je nach Bedarf gibt es viele Möglichkeiten: Sikuli, Robot, AutoIt, …

1641714541 718 So andern Sie den Speicherort fur den Dateidownload in Webdriver
Thirumaran

Verwenden Sie dieselbe Roboterklasse und drücken Sie die Eingabetaste, um im Windows-Dialogfeld “Speichern” auszuwählen.

robo.keyPress(KeyEvent.VK_ENTER); robo.keyRelease(KeyEvent.VK_ENTER);

Wenn Sie es umbenennen müssen, kopieren Sie den Dateinamen in die Zwischenablage und übergeben Sie es wie unten

StringSelection file = new StringSelection("D:\image.jpg");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(file, null);

Robot rb = new Robot();

rb.setAutoDelay(2000); // Similar to thread.sleep

rb.keyPress(KeyEvent.VK_CONTROL);
rb.keyPress(KeyEvent.VK_V);

rb.keyRelease(KeyEvent.VK_CONTROL);
rb.keyRelease(KeyEvent.VK_V);

rb.setAutoDelay(2000);

rb.keyPress(KeyEvent.VK_ENTER);
rb.keyRelease(KeyEvent.VK_ENTER);

1641714541 795 So andern Sie den Speicherort fur den Dateidownload in Webdriver
Benutzer1586480

Wahrscheinlich nicht die beste Lösung, aber Sie können versuchen, das Speichern für die angezeigte Box mit der Sikuli-API zu bestätigen.

Das Feld Speichern unter ist ein Betriebssystemfenster.

1641714541 824 So andern Sie den Speicherort fur den Dateidownload in Webdriver
Bachan Joseph

Für Chrome wird es funktionieren

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);

.

204980cookie-checkSo ändern Sie den Speicherort für den Dateidownload in Webdriver, während Sie den Chrome-Treiber/Firefox-Treiber verwenden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy