Selenium,Java,waitForCondition

时间:2011-06-02 15:31:17

标签: java flash selenium

我想检查以下内容(在ie8上):

点击链接后,会启动弹出窗口,然后我想检查内部的Flash内容是否已加载。

由于某种原因,waitForPopUp不起作用,它只是等待和超时,但我已经解决了这个问题:

selenium.waitForCondition("selenium.getAllWindowTitles().length > 1;", "30000");
String windowID = selenium.getAllWindowTitles()[1];
selenium.selectWindow(windowID);

然后我想在检查闪存内容之前检查闪存内容是否存在(网页非常慢,弹出窗口需要一段时间才能显示)

selenium.waitForCondition("selenium.isElementPresent(\"//*[@id='flashcontent']\");",
"30000");
FlashSelenium flashApp = new FlashSelenium(selenium, "flashClient");
assertTrue ( flashApp.PercentLoaded() == 100 );

我已经尝试了数百种方法来做到这一点,但没有一种方法可行, 我还尝试检查文本是否存在但没有任何内容,即使网页已完全加载也总是超时。

由于某种原因,如果我在调试器中逐步执行,一切正常:S

1 个答案:

答案 0 :(得分:1)

我更多地考虑了这一点 如果对象是真正加载的并且flash应用程序已准备就绪并已初始化,则无法测试对象 允许selenium知道flash对象的唯一真正的方法是加载并准备好让flash使用ExternalInterface方法并调用一个JavaScript函数,该函数将分配一个var,然后在定时器上对var进行selenium测试。

Example<br/>
// in JavaScript
var isFlashLoaded = false;
function cbIsLoaded( ){
   isFlashLoaded = true;
}


// in AS3 
var retVal:int = ExternalInterface.call("cbIsLoaded");