gpt4 book ai didi

apache-flex - 无法使用 selenium flex api 执行单击按钮?

转载 作者:行者123 更新时间:2023-12-04 05:20:27 27 4
gpt4 key购买 nike

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

最佳答案

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

  • 确保您的 *.swf(flex 应用程序)是针对 Selenium-Flex API 编译的。 *.swc 库正确
  • 在带有 Javascript 调试控制台的 Web 浏览器中运行您的 swf(例如,带有 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应该评估为功能(不是未定义)。您还应该能够在没有错误的情况下调用此函数 - document.getElementById(swfId).doFlexClick('idOfFlexObject')哪里idOfFlexObject是 swf 中某个对象(例如按钮)的 ID。
  • 因此,现在您应该能够找到在通过 selenium 对您的 swf 调用时遇到问题的命令,并在您的 Javascript 调试控制台中针对 swf 测试它们是否有错误。
  • 如果您的 swf 确实是针对您的 swf 正确编译的,那么当您针对您的 swf 调用相应的 Javascript 函数时,您很可能会收到错误(Javascript 函数本身已正确定义并暴露给 Javascript,但是您的swf 调用时)。然后,您可以通过下载 Flex-Selenium 的源代码(参见前面的超链接)并将一个 flex 调试器附加到您的 swf 并在其搜索路径中使用此源代码来找到此错误的原因。您将在执行失败的命令时放置一个断点。根据我自己的经验,我不得不自定义和修复 Flex-Selenium 源代码中的小错误。
  • 如果您没有在 Javascript 调试控制台上观察到错误,您应该发布 Selenium RC 无法针对您的 swf 运行命令的堆栈跟踪,因为这可能与您使用或配置 Selenium RC(或 Selenium IDE)有关) 是问题所在。
  • 关于apache-flex - 无法使用 selenium flex api 执行单击按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13740326/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com