使用chrome驱动程序/ firefox驱动程序时,如何更改Webdriver中的文件下载位置 [英] how to change file download location in Webdriver while using chrome driver/firefox driver

查看:263
本文介绍了使用chrome驱动程序/ firefox驱动程序时,如何更改Webdriver中的文件下载位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过在特定文件夹中使用保存为选项来保存图像。我找到一种方法,我可以右键单击我想保存的图像,使用保存作为选项。但是我遇到的问题是在获取os窗口后,询问在哪里保存文件,因为我不知道该怎么做,我无法发送所需的位置。我经历了这个论坛上提到的类似问题,但是迄今尚未提供帮助。

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.

代码是 -

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

对于chrome-

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

推荐答案

代码中有两件事情出错。

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

其次,您正在设置首选项 browser.download.folderlist ,它是 browser.download.folderList (在文件夹列表中为L大小)。

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

一旦实现了这一切,您可以使用Robot类来执行

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

希望这有帮助。 :)

这篇关于使用chrome驱动程序/ firefox驱动程序时,如何更改Webdriver中的文件下载位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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