我广泛使用Selenium进行集成测试。适用于所有普通的东西(HTML/AJAX),但当我尝试测试第三方 ActiveX、Java 小程序和 Flash 组件时就不行了。
我为此找到的解决方案是Sikuli。在本地工作得很好,但我怎样才能将它集成到 Selenium 中?
顺便提一句。如果这是相关的,对于 Selenium,我正在使用 Python API。
请参阅 Selenium RC 文档的 Python 部分:http: //seleniumhq.org/docs/05_selenium_rc.html#python
您也许可以从 Jython 运行 Selenium 测试。在这种情况下,您可以简单地将 Selenium 脚本集成到您的 Sikuli 脚本中。
在 Sikuli IDE 中尝试以下操作。您可能需要修改导入语句以指向 Selenium 项目中的特定文件。
from selenium import selenium # this will probably need tweaking...
slm = selenium("localhost", 4444, "*firefox", "http://www.google.com/")
slm.start()
# etc...
这家伙似乎已经成功地从 Jython 控制了 Selenium:http ://adam.goucher.ca/?p=367
我的结论:留在 Jython 并从那里控制 Selenium 可能是最容易的。您可以将这两个工具集成到一个脚本中。
在 Selenium Grid 上可以有 Sikuli 功能。它需要在每个节点和集线器上安装额外的库。
检查此项目以了解更多信息
如果您想在 Selenium Grid 上远程运行 Sikuli 功能,那么您似乎必须以 某种方式使用Selenium Augmenter来完成。这里没有一个答案显示远程网格(例如使用 SauceLabs)将如何获得 Sikuli 功能。也许 Selenium 项目还没有增加 Augmenter 类来加载像 Sikuli 这样的外部库?
出于这个原因,当我使用 Sikuli 时,我总是必须使用非远程、标准、本地的 WebDriver 实例。
如果不需要使用自定义或特定的测试框架,一种选择是机器人框架 (RF)。它有一个 Selenium 库,并且有一个关于如何将 Sikuli 与 RF 一起使用的方法。考虑到这一点,您可以使用 RF 将两者结合在一起。Plus RF 内置了一些不错的测试自动化框架功能。
机器人框架.org
http://blog.mykhailo.com/2011/02/how-to-sikuli-and-robot-framework.html
您可以扩展 Selenium 服务器,使其能够执行 SIKULI 脚本(请参阅如何从 Java 调用它们)。
但是,您需要使用 Java 进行开发,因为 Selenium Server 是一个 Java 应用程序。