apache-flex 无法使用Selenium Flex API点击按钮?

smdnsysy  于 2022-11-01  发布在  Apache
关注(0)|答案(2)|浏览(283)

我有一个Flash应用程序,它已经用Selenium Flex重新编译。
使用FlashFirebug,我能够找到该应用程序的定位器,并且我已经使用Selenium Flex API和Selenium RC编写了脚本,当我运行脚本时,这些定位器被识别,但无法执行操作。
在selenium IDE中,这些定位器也可以被识别,但是像click这样的操作无法执行。

xcitsw88

xcitsw881#

这就是我如何找到你的问题的根源:

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

ymdaylpp2#

通过SFAPI(Slenium Flex API)点击Flex应用程序非常简单,您必须使用SeleniumFlexAPI.swc文件编译Flex代码,该文件位于SFAPI文件夹中。对于SFAPI的这些文件,您需要遵循以下步骤See here
see example here

相关问题