2012-12-06 66 views
2

我有一个已经与Selenium Flex重新编译的Flash应用程序。
使用FlashFirebug我能够找到该应用程序的定位器,并且我已经使用Selenium RC使用selenium flex API编写脚本,当我运行脚本时,这些定位器已被识别但操作无法执行。
在硒IDE中也可以识别这些定位器,但无法执行类似点击之类的操作。在这里,我已将user-extension.js附加到我的IDE中。无法使用selenium flex api执行点击按钮?

回答

3

这是我怎么会找到你的问题的根本原因:

  • 确保您的* .swf文件(Flex应用程序)的反对Selenium-Flex API *库名为.swc编译正确
    • 运行您在带有Javascript调试控制台的Web浏览器中swf(例如,带有Firebug的Firefox)。
    • 使用JavaScript控制台,使用它的DOM ID获取SWF的引用 - document.getElementById(swfId)
    • 现在,测试Flex的硒,通过运行测试的一个符合到您的SWF OK命令,它所公开的硒。这些命令是在上一步获得的对象上执行的Javascript函数 - 有关详细信息,请参阅accessing a Flex app from Javascript。所有Flex-Selenium公开的命令都可以在Commmands.as的Flex-Selenium源代码中找到。例如,ExternalInterface.addCallback("doFlexMouseDown", mouseCommands.doFlexMouseDown);表示名为的Javascript函数doFlexMouseDown(在MouseCommands.as中定义)已在您的swf中公开。执行Javascript表达式typeof document.getElementById('swfId').doFlexMouseDown应评估为函数(不是undefined)。你也应该可以在不出错的情况下调用这个函数 - document.getElementById(swfId).doFlexClick('idOfFlexObject')其中idOfFlexObject是swf中某个对象(例如一个按钮)的ID。
  • 因此,现在您应该能够找到您通过硒针对您的swf调用时遇到问题的命令,并在您的Javascript调试控制台中针对swf对错误进行测试。
    • 如果您的swf确实是针对您的swf正确编译的,那么当您针对您的swf调用相应的Javascript函数时,您很可能会收到错误(Javascript函数本身已定义并正确显示给Javascript,当它被调用时发生在你的swf中)。然后,通过下载Flex-Selenium的源代码(请参阅以前的超链接)并将Flex源代码放入其搜索路径中,将Flex调试器附加到您的swf中,然后找到此错误的原因。您将在执行失败的命令时放置一个断点。根据我自己的经验,我必须定制并修复Flex-Selenium源代码中的小错误。
    • 如果您在Javascript调试控制台上没有发现错误,那么您应该在Selenium RC未能针对您的swf运行命令的情况下发布堆栈跟踪,因为那样可能会导致您使用或配置了Selenium RC或Selenium IDE)是问题所在。
0

这很简单,通过SFAPI(Slenium的Flex API) 点击Flex应用程序,你必须编译SeleniumFlexAPI Flex代码。SWC文件,您将在SFAPI文件夹中获得,对于 你需要遵循这些步骤SFAPI,这些文件See here

或者see example here