一旦测试产生新窗口,Selenium Test(junit)就会卡住

时间:2011-07-27 07:44:42

标签: selenium automation automated-tests integration-testing junit4

问题是,一旦新窗口产生,测试在行waitForPageToLoad(3000)之后挂起并最终超时。一旦测试挂起,如果我在父窗口中手动触发一些事件,测试开始正常执行。因此,作为一种解决方案,我尝试添加选择父窗口的代码并触发一些事件。但是这段代码根本不起作用。如果有人能够指出我在哪里遗漏了某些东西或指出了我错误的方法。

我遵循的步骤:

  1. 点击打开新窗口的链接。( 此处link = 3018

  2. 一旦新的 window2 打开,就不会自动执行进一步的操作,测试只会挂起,直到超时间隔之后才会引发超时异常。

  3. 在超时间隔之前,在父 window1 上手动触发事件(点击链接=发件箱)。

  4. 测试开始正常执行并成功完成。

  5. 代码段(在父窗口中手动触发evnt后工作正常):

                selenium.click("link=Last");
                selenium.waitForPageToLoad("30000");
                selenium.click("link=3018");
                selenium.waitForPageToLoad("30000");              
                selenium.selectWindow("window2");
                selenium.selectFrame("relative=up");
                selenium.click("687c55");
                selenium.waitForPageToLoad("30000");
                assertEquals("window2", selenium.getTitle());
                selenium.close();
    

    代码段(在将代码添加到选择窗口并在父窗口中触发evnt后,evn失败):

                selenium.click("link=Last");
                selenium.waitForPageToLoad("30000");
                selenium.click("link=3018");
                selenium.waitForPageToLoad("30000");
                selenium.selectWindow("window1");              
                selenium.click("link=Outbox");
                selenium.waitForPageToLoad("30000");
                selenium.selectWindow("window2");
                selenium.selectFrame("relative=up");
                selenium.click("687c55");
                selenium.waitForPageToLoad("30000");
                assertEquals("window2", selenium.getTitle());
                selenium.close();
    

    在添加代码以选择父窗口并触发click事件后,我找不到任何理由导致代码仍然失败。它仍然只是挂起并在超时后抛出异常。 :(

    selenium处理弹出窗口有没有错误? 想对我在处理selenium中的弹出窗口的方法中进行修改提出任何建议

1 个答案:

答案 0 :(得分:0)

Selenium RC可以轻松处理弹出窗口。我们的很多测试都使用它们。你没有说明什么命令超时,但我猜它是selectWindow("window2")selectFrame("relative=up")

如果是前者,您可能得到了错误的窗口名称 - 您应该使用与window.open(url, name, ...)中使用的值相同的值。

如果是后者,那么弹出窗口中是否有多个帧?事实上,现在我想到了,这可能是失败的命令,因为即使在多帧窗口中,Selenium也会开始专注于最顶层的帧,因此"relative=up"将不起作用。