【问题标题】:Selenium Test (junit ) get stuck once the test spawns new window一旦测试产生新窗口,硒测试(junit)就会卡住
【发布时间】:2011-10-14 00:53:45
【问题描述】:

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

我遵循的步骤:

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

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

  3. 在超时间隔之前在父 window1 上手动触发事件(click link=outbox)。

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

代码 sn-p(在父窗口中手动触发 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();

代码 sn-p(在向选择窗口添加代码并在父窗口中触发 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();

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

硒处理弹出窗口是否有任何错误? 希望对我在 selenium 中处理弹出窗口的方法的修改有任何建议

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 正如我所写(第 1 步和第 2 步)脚本在执行 selenium.click("link=3018") 和 selenium.waitForPageToLoad("30000") 后挂起 结果,新窗口打开成功,但由于挂断而没有进一步的自动化。一旦挂断后我将在 window1 中触发一些事件,一切都会再次自动化。谢谢
    • 好吧,那是你的问题。如果 click() 是打开窗口的东西,Selenium 永远不会看到原始窗口加载页面 - 这是在 OTHER 窗口中发生的。您的 selectWindow() 需要位于 click() 和 waitForPageToLoad() 之间。您可能需要等待它出现,但这是另一个话题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2019-12-17
    • 2022-10-19
    • 2012-12-18
    • 2021-03-28
    相关资源
    最近更新 更多