如何使用Selenium和ChromeDriver

时间:2018-02-02 11:59:25

标签: google-chrome selenium webdriver selenium-chromedriver

我有一个用selenium和ChromeDriver(在Windows上)测试的网站,我喜欢测试导出数据的功能并再次导入。

导出会创建一个在一台计算机上下载的xml文件。使用webdriver运行时,Chrome会询问我是保留文件还是丢弃文件,因为它可能是潜在的威胁。

如何在测试中关闭此行为?我可以使用chrome设置,因此无论下载什么文件都是一个文件吗?

由于

2 个答案:

答案 0 :(得分:1)

试试这个。在Windows上执行

How to control the download of files with Selenium Python bindings in Chrome

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_experimental_option("prefs", {
  "download.default_directory": r"C:\Users\xxx\downloads\Test",
  "download.prompt_for_download": False,
  "download.directory_upgrade": True,
  "safebrowsing.enabled": True
})

答案 1 :(得分:1)

以下程序将帮助您下载Chrome中的文件 期望-能力。这是一个拥有大量实用工具的丰富课程,你可以在空闲时间完成它。

public class DownloadChromeFile {
       public static void main(String[] args) {
       System.setProperty("webdriver.chrome.driver","./chromedriver.exe");
       String downloadFilepath = "c:\\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();
       HashMap<String, Object> chromeOptionsMap = new HashMap<String, Object>();
       options.setExperimentalOption("prefs", chromePrefs);
       options.addArguments("--test-type");
       options.addArguments("--disable-extensions"); //to disable browser extension popup

       DesiredCapabilities cap = DesiredCapabilities.chrome();
       cap.setCapability(ChromeOptions.CAPABILITY, chromeOptionsMap);
       cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); // Bydefault it will accepts all popups.
       cap.setCapability(ChromeOptions.CAPABILITY, options);
       driver = new ChromeDriver(cap);  
                driver.get("Your Application Url");
                driver.findElement(By.xpath("Export Button xpath")).click();
        }
}