Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 下载文件时,如何单击并处理IE中弹出的对话框窗口?_Java_Selenium_Testng - Fatal编程技术网

Java 下载文件时,如何单击并处理IE中弹出的对话框窗口?

Java 下载文件时,如何单击并处理IE中弹出的对话框窗口?,java,selenium,testng,Java,Selenium,Testng,我想在java中使用SeleniumWebDriver自动化测试。我正在自动下载文件部分,但无法处理在IE中下载时弹出的另存为对话框窗口。通过单击链接,IE显示从弹出窗口保存或打开文件。 首先下载autoit: 将其添加到windows环境变量内的路径,以便可以从命令提示符下执行 示例路径: C:\ProgramFiles(x86)\AutoIt3 下面是一个处理自动it脚本的示例方法 public static void saveFileInternetExplorer() throws E

我想在java中使用SeleniumWebDriver自动化测试。我正在自动下载文件部分,但无法处理在IE中下载时弹出的另存为对话框窗口。通过单击链接,IE显示从弹出窗口保存或打开文件。

首先下载autoit: 将其添加到windows环境变量内的路径,以便可以从命令提示符下执行

示例路径:

C:\ProgramFiles(x86)\AutoIt3

下面是一个处理自动it脚本的示例方法

public static void saveFileInternetExplorer() throws Exception {

        String pathToAutoItScript = "C:\\save_file_IE11.au3";
        String command = "AutoIt3.exe " + pathToAutoItScript;
        System.out.println("AutoIt command: " + command );
        String output = new CommandLine(command).executeGetOutput();

        if (output.contains("ERROR")) {
            throw new Exception("AutoIt script error: " + output);
        }

        System.out.println(output);
    }
在IE 11中保存文件的AutoIt脚本

  • 保存文件\u IE11.au3

单击下载按钮后,运行autoit3脚本,这将保存文件


祝你好运

我认为这个对话框可能算作“弹出窗口”,这意味着你可能必须切换窗口并“处理”弹出窗口,因为它不是实际网页本身的一部分。任何用来处理弹出窗口的东西都可能是解决这个问题的方法。我不认为你能从xpath得到它。这里简单介绍的方法可能是一个值得尝试的好方法。
public static void saveFileInternetExplorer() throws Exception {

        String pathToAutoItScript = "C:\\save_file_IE11.au3";
        String command = "AutoIt3.exe " + pathToAutoItScript;
        System.out.println("AutoIt command: " + command );
        String output = new CommandLine(command).executeGetOutput();

        if (output.contains("ERROR")) {
            throw new Exception("AutoIt script error: " + output);
        }

        System.out.println(output);
    }
Sleep(5000)

    Local $hIE = WinGetHandle("[Class:IEFrame]")
    Local $hCtrl = ControlGetHandle($hIE, "", "[ClassNN:DirectUIHWND1]")

    If WinExists($hIE,"") Then
        WinActivate($hIE,"")
        ControlSend($hIE ,"",$hCtrl,"{F6}")          ; Gives focus to Open Button
        Sleep(500)
        ControlSend($hIE ,"",$hCtrl,"{TAB}")          ; Gives focus to Save Button
        Sleep(500)
        ControlSend($hIE ,"",$hCtrl,"{enter}")        ; Submit whatever control has focus
    EndIf
Sleep(3000)