Selenium、Java、waitForCondition
我想检查以下内容(在ie8上): 点击链接后,弹出窗口启动,然后我想检查里面的flash内容是否已加载 出于某些原因,waitForPopUp不起作用,它只是一直在等待并超时,但我用这种方式解决了它:Selenium、Java、waitForCondition,java,flash,selenium,Java,Flash,Selenium,我想检查以下内容(在ie8上): 点击链接后,弹出窗口启动,然后我想检查里面的flash内容是否已加载 出于某些原因,waitForPopUp不起作用,它只是一直在等待并超时,但我用这种方式解决了它: selenium.waitForCondition("selenium.getAllWindowTitles().length > 1;", "30000"); String windowID = selenium.getAllWindowTitles()[1]; selenium.sele
selenium.waitForCondition("selenium.getAllWindowTitles().length > 1;", "30000");
String windowID = selenium.getAllWindowTitles()[1];
selenium.selectWindow(windowID);
然后我想在检查任何内容之前检查一下flash内容是否在那里(网页速度很慢,弹出窗口需要一段时间才能显示内容)
我已经尝试了数百种方法,但没有一种有效,
我也试着检查文本是否存在,但没有,即使网页完全加载,也总是超时
出于某种原因,如果我在调试器中一步一步地执行,一切都正常:我对此进行了一些思考。
如果对象已真实加载且flash应用程序已准备就绪并初始化,则无法对其进行测试。
让selenium知道flash对象已加载并准备就绪的唯一真正方法是让flash使用ExternalInterface方法并调用JavaScript函数,该函数将分配一个变量,然后让selenium在计时器上测试该变量
Example<br/>
// in JavaScript
var isFlashLoaded = false;
function cbIsLoaded( ){
isFlashLoaded = true;
}
// in AS3
var retVal:int = ExternalInterface.call("cbIsLoaded");
示例
//在JavaScript中
var isFlashLoaded=false;
函数cbIsLoaded(){
isFlashLoaded=true;
}
//在AS3中
var retVal:int=ExternalInterface.call(“cbIsLoaded”);
尝试以其他方式执行操作:flashObj=document.getElementById('flashClient');在萤火虫工厂。selenium.getEval(“this.browserbot.getCurrentWindow().document.getElementById('flashClient');”)返回null。selenium.getEval(“this.page().findElement('id=flashClient');”)引发找不到元素的异常。有猜测吗?可能为空,因为对象尚未创建?如果没有加载,firebug中也会为空,对吗?firebug不太清楚。FireBug可能只是在展示里面应该有的东西。在脚本尝试对flash对象执行任何操作之前,请尝试在脚本中延迟几秒钟。看看这是否有帮助,所以我需要要求开发团队在他们的代码中包含类似的内容……让我们看看我需要多少时间来教这些老狗一个新的技巧:p。谢谢
Example<br/>
// in JavaScript
var isFlashLoaded = false;
function cbIsLoaded( ){
isFlashLoaded = true;
}
// in AS3
var retVal:int = ExternalInterface.call("cbIsLoaded");