微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java或Javascript中的窗口对话框和弹出窗口处理

我需要操纵Popups&使用JavaJava的IE浏览器的下载对话框
基于Java的自动解决方案.

我尝试了selenium2,但是它不能正常工作,因此其他建议也一样.
实际上selenium2不能正确处理警报/下载对话框,因此
我正在考虑使用其他一些javascript / java解决方案.

使用“下载对话框”:我需要将下载的文件保存到特定位置.
使用“警报对话框”:我需要检查显示的消息并单击特定按钮.

任何建议表示赞赏.
谢谢.

解决方法:

我使用硒1,它可以很好地处理我的应用程序中的弹出窗口.

    //Click on browse file button, open a popup
    selenium.click("//input[@value='browse...']");

    //waiting for popup to load
    selenium.waitForPopUp("_Dialog", "30000");

    //selecting the popup by passing window name
    selenium.selectwindow("name=_Dialog");

    //click a link inside pop up window
    selenium.click("link=something");

    //Put other popup operations here

    //click cancel button for pop up
    selenium.click("cancel");

    //back to main window
    selenium.selectwindow("null")

要从警报框中获取消息,请使用selenium.getAlert();.这将以字符串形式返回警报框中包含的消息.

另外,有时需要在切换到警报之前检查是否已发生警报.

        int noofWindows = selenium.getAllWindowNames().length;
        if (noofWindows > 1){
        //selects the second window 
        selenium.selectwindow(selenium.getAllWindowIds()[2]);
        //Prints the message in the alert window
        System.out.println(selenium.getAlert());
        }

如果不需要在IE中运行测试,请在执行代码之前使用firefox(* chrome)并关闭所有其他窗口.

我希望这可以帮助你.

*所有提及的代码均用于处理JavaScript弹出窗口.我不确定这是否适用于Vb脚本.

编辑

我认为IE下载弹出窗口是Windows事件,因此无法直接由Selenium处理,为此,您必须使用Java AWT或AutoIT.

AutoIT脚本应该类似于

WinWaitactive(windowTitle)
ControlClick(windowTitle,"",buttonName)

并将其另存为IEsave.exe.注意:我没有尝试过此AutoIT脚本.

现在您已经从程序中执行IEsave.exe.我在这里使用Java.

java.lang.Runtime.getRuntime().exec("c:/IEsave.exe");

这将执行文件,该文件将依次处理Windows的保存按钮事件.

您可以创建类似的exe文件来处理其他窗口的事件.

希望这能解决您的问题.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐