问题是,一旦新窗口产生,测试在行waitForPageToLoad(3000)之后挂起并最终超时。一旦测试挂起,如果我在父窗口中手动触发一些事件,测试开始正常执行。因此,作为一种解决方案,我尝试添加选择父窗口的代码并触发一些事件。但是这段代码根本不起作用。如果有人能够指出我在哪里遗漏了某些东西或指出了我错误的方法。
我遵循的步骤:
点击打开新窗口的链接。( 此处link = 3018 )
一旦新的 window2 打开,就不会自动执行进一步的操作,测试只会挂起,直到超时间隔之后才会引发超时异常。
在超时间隔之前,在父 window1 上手动触发事件(点击链接=发件箱)。
测试开始正常执行并成功完成。
代码段(在父窗口中手动触发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中的弹出窗口的方法中进行修改提出任何建议
答案 0 :(得分:0)
Selenium RC可以轻松处理弹出窗口。我们的很多测试都使用它们。你没有说明什么命令超时,但我猜它是selectWindow("window2")
或selectFrame("relative=up")
。
如果是前者,您可能得到了错误的窗口名称 - 您应该使用与window.open(url, name, ...)
中使用的值相同的值。
如果是后者,那么弹出窗口中是否有多个帧?事实上,现在我想到了,这可能是失败的命令,因为即使在多帧窗口中,Selenium也会开始专注于最顶层的帧,因此"relative=up"
将不起作用。