0

我是硒 RC 的新手。我一直在 eclipse 中运行一个简单的 junit 测试用例来运行和从 adobe.com 下载 flashplayer。

但是 selenium RC 无法点击甚至识别下载弹出窗口。我在谷歌搜索中看到了一些建议,但我仍然无法做到。

我一直在尝试获取窗口 ID 或弹出窗口的名称来使用它,但我仍然无法做到。我在下面复制了我的代码的主要功能:

public void testPopup() throws Exception 
    {
    selenium.open("http://get.adobe.com/");
    selenium.open("/flashplayer/");
    selenium.click("id=buttonDownload");

    String ids[]=selenium.getAllWindowIds();
    for(int i=0;i<ids.length;i++)
        System.out.println(ids[i]);
    String[] windownames=selenium.getAllWindowNames();
    for(int i=0;i<windownames.length;i++)
        System.out.println(windownames[i]);

        String feedWinId = selenium.getEval("{var windowId; for(var x in selenium.browserbot.openedWindows ) {windowId=x;} }");
    System.out.println(feedWinId);
        selenium.chooseOkOnNextConfirmation();
    selenium.waitForPageToLoad("30000");                                        
}

如果有人可以帮助我解决这个问题,那就太好了。

谢谢

4

2 回答 2

0

您不能使用 selenium 自动生成系统弹出窗口。
为此,您必须转移 Autoit with selenium
借助此功能,您可以在下载弹出窗口中记录您的活动

于 2012-07-03T12:32:35.513 回答
0

简短的回答:你不能。

更长但仍然令人失望的答案:

你不能,因为当前没有 Selenium 实现支持它。Selenium 的人都知道它,它实际上是 nr。目前 Selenium 中最受欢迎的 13 个功能

Selenium RC 永远不会拥有它,因为它的技术限制(它是纯 JavaScript。纯 JavaScript 无法下载和保存文件。)并且一年多前它已被弃用。Selenium WebDriver ...好吧,也许,在未来。您可以尝试的各种方法:

  • 重新考虑是否真的需要下载文件。仅仅断言文件存在并且可以通过发出 HTTP 请求并看到答案200 OK来下载是不是可以的?
  • 通过 Selenium 获得 URL 后,不能使用纯 Java 下载文件吗?我个人认为这是最好的方法。
  • 如果您使用的是 WebDriver,有一个下载文件的好工具
  • 如果您使用的是 Firefox,您可以设置一个干净的测试配置文件,该配置文件将被配置为将每个点击的文件下载到某个指定的文件夹中。那里也有可以帮助您的插件。我不确定 Selenium RC 是否支持使用预先创建的配置文件,但 Selenium WebDriver 肯定支持。
  • 如果您使用给定的浏览器进行测试,您可以通过盲目按下按钮来弄清楚如何“盲目地”下载文件。这Robot门课可以帮助你。您只需单击文件,然后盲目地按Enter或任何键将文件下载到正确的位置。还有很多人用于此任务的AutoIt 框架
于 2012-07-02T23:40:22.377 回答