无法使用selenium flex api执行点击按钮?

时间:2012-12-06 09:14:51

标签: flex selenium automation

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

2 个答案:

答案 0 :(得分:3)

这就是我找到问题的根本原因:

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

答案 1 :(得分:0)

通过SFAPI(Slenium Flex API)单击flex应用程序非常简单 您必须使用SeleniumFlexAPI.swc文件编译您的Flex代码,您将在SFAPI文件夹中获取该文件,对于SFAPI的这些文件, 您需要按照以下步骤See here

执行

see example here