如何更改文件​​的webdriver下载位置,而使用的镀铬驱动器/驱动器火狐 [英] how to change file download location in Webdriver while using chrome driver/firefox driver

查看:376
本文介绍了如何更改文件​​的webdriver下载位置,而使用的镀铬驱动器/驱动器火狐的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图通过使用保存为一个特定的文件夹中选择保存图像。我发现了一个途径,使我能够右击我想用另存为选项保存图像。但是,在我停留的问题就是如何让这问在哪里保存我不能够发送所需位置的文件,因为我不知道如何做到这一点的操作系统窗口后。我问过这个论坛,但非他们帮助至今。

I am trying to save an image by using save as option inside a specific folder. I found a way by which i am able to right click on the image which i want to save using save as option. But the problem where i am stuck is after getting the os window which asks where to save the file i am not able to send the desired location because i don't know how to do it. I went through the similar questions asked on this forum but non of them helped so far.

code是 -

对于Firefox -

For 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

有关铬 -

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
   }
 }

推荐答案

有两件事情,在code会错了。

There are two things that are going wrong in code.

对于Firefox:
您需要设置

For Firefox: You need to set

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

不要

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

其次,要设置preference browser.download.folderlist ,它的 browser.download.folderList (L的folderList上限)。

secondly, you are setting preference browser.download.folderlist, it is browser.download.folderList (L caps in folderList).

一旦你做到了这一点两者,你可以用那么你的机器人类来执行所需的操作。

Once you have achieved this both, you can use then your Robot class to perform desired operations.

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

希望这有助于。 :)

Hope this helps. :)

这篇关于如何更改文件​​的webdriver下载位置,而使用的镀铬驱动器/驱动器火狐的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆