Selenium Web Driver中的句柄对话框

时间:2015-08-18 11:07:23

标签: java selenium-webdriver

我正在尝试在我的应用程序中自动执行下载过程。

最后一步是一个对话框。

我希望Selenium选择'保存文件'单击对话框中的单选按钮,然后单击“确定”。按钮。

这是否可以在Selenium Webdriver中使用?

注意:'提醒'没有工作。

它既不是窗口也不是警报,因此我无法切换到此对话框。

非常感谢任何帮助。

我看到的对话框与

相同

WebDriver driver = new FirefoxDriver();         driver.get(" http://selenium-release.storage.googleapis.com/2.47/selenium-java-2.47.1.zip&#34);

我尝试过getWindowHandle()方法切换到对话框。但它没有工作

4 个答案:

答案 0 :(得分:1)

您可以使用此代码下载文件,此处设置了所有弹出窗口和提醒,以便您自动执行下载过程:

public class fileUse {

    public static String downloadPath = "D:\\downloads";

    @Test
    public void testDownload() throws Exception {
        WebDriver driver = new FirefoxDriver(FirefoxDriverProfile());   
        driver.manage().window().maximize();
        driver.get("FILE URL");
    }

    public static FirefoxProfile FirefoxDriverProfile() throws Exception {
        FirefoxProfile profile = new FirefoxProfile();
        profile.setPreference("browser.download.folderList", 2);
        profile.setPreference("browser.download.manager.showWhenStarting", false);
        profile.setPreference("browser.download.dir", downloadPath);
        profile.setPreference("browser.helperApps.neverAsk.openFile",
                "text/csv,application/x-msexcel,application/excel,application/x-excel,application/vnd.ms-excel,image/png,image/jpeg,text/html,text/plain,application/msword,application/xml");
        profile.setPreference("browser.helperApps.neverAsk.saveToDisk",
"text/csv,application/x-msexcel,application/excel,application/x-excel,application/vnd.ms-excel,image/png,image/jpeg,text/html,text/plain,application/msword,application/xml");
        profile.setPreference("browser.helperApps.alwaysAsk.force", false);
        profile.setPreference("browser.download.manager.alertOnEXEOpen", false);
        profile.setPreference("browser.download.manager.focusWhenStarting", false);
        profile.setPreference("browser.download.manager.useWindow", false);
        profile.setPreference("browser.download.manager.showAlertOnComplete", false);
        profile.setPreference("browser.download.manager.closeWhenDone", false);
        profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/zip");
            return profile;
        }
    }

不要忘记导入org.testng.annotations.Test

答案 1 :(得分:0)

实际上它取决于浏览器,你使用的是Firefox

使用firefox配置文件下载文件。这个配置文件跳过firefox的dialoge框。 在线: -

   pro.setPreference("browser.downLoad.folderList", 0);

browser.download.folderList的值可以设置为0,1或2.当设置为0时,Firefox会将通过浏览器下载的所有文件保存在用户的桌面上。设置为1时,这些下载内容存储在“下载”文件夹中。设置为2时,将再次使用为最近下载指定的位置。

您需要实施的Firefox个人资料代码: -

        FirefoxProfile pro=new FirefoxProfile();
        pro.setPreference("browser.downLoad.folderList", 0);
        pro.setPreference("browser.helperApps.neverAsk.saveToDisk", "Applications/zip");
        WebDriver driver=new FirefoxDriver(pro);
        driver.get("http://selenium-release.storage.googleapis.com/2.47/selenium-java-2.47.1.zip");

希望它会对你有所帮助:)。

答案 2 :(得分:0)

下载提醒是基于Windows的警报。它不是由浏览器提出的。因此,您无法使用Selenium WebDriver对其进行自动化。您可以使用AutoIT或Robot框架自动执行基于Windows的弹出窗口。

答案 3 :(得分:-1)

请使用Auto IT工具并通过它自动化下载窗口部分。 使用javaScriptExecutor在脚本中调用AutoIT Sciprt。

希望它能奏效!