模态对话框、activex、flash等各种自定义控件处理起来是不是很头疼。Sikuli是一个根据图形匹配的测试工具,尤其是结合了selenium,基本上可以解决web测试上所有的技术问题。不知道sikuli的可以下载了先体验一下,IDE很简单,用截图也能做测试,但是这也不是本文介绍的重点。本文介绍在RF下sikuli+selenium协同工作互补不足。所以本文仅针对在RF下selenium不能满足需求的使用者。如果你不懂sikuli,可以先了解一下,一种截图测试工具。
Sikuli与robotframework集成
Sikuli只能jython调用,而在RF中,selenium库是python写的。所以要把sikuli当成一个远程库调用。jython没安装的,请参考前一篇日志http://www.51testing.com/index.php?uid-424226-action-viewspace-itemid-845458。
Sikuli远程环境
1、 下载sikuli,并安装。这个不用说太多了吧。ps:sikuli只能在32位jdk6跑Java 7 or 64-bit are not supported 装完看到有sikuli_home的环境变量才算成功。
2、 创建一个测试文件夹[C:\robot] [C:\robot\data] [C:\robot\libs] [C:\robot\suites]
3、 下载文件http://robotframework.googlecode.com/hg/tools/remoteserver/robotremoteserver.py另存在[C:\robot\libs]文件夹内
4、 复制sikuli的安装目录下的C:\Program Files (x86)\Sikuli X\sikuli-script.jar到[C:\robot\libs]文件夹内
5、 加上环境变量到class_path (C:\robot\libs\sikuli-script.jar).
6、 新建一个文件SikuliRemoteLibrary.py到[C:\robot\libs]文件夹内(此文件在群GX可以下载Rf+sikuli+selenium例子.rar,)
7、 运行sikuli远程库,如果你前面的环境是完全按照我的教程能运行jybot,那现在应该在命令行敲jython.bat C:\robot\libs\SikuliRemoteLibrary.py 如果出现robot framework remote server starting at localhost:8270 那就成功启动了sikuli远程库了。反之,好好检查环境变量吧,或者把sikuli-script.jar拖到 class_path 所在的目录。
Robot framrwork调用sikuli远程库,拿百度来说事吧。
很简答的例子,一个是调用selenium在百度输入selenium并搜索,另一个case是调用sikuli在百度输入selenium并搜索。
文档粘贴在本文最后,请复制并保存在[C:\robot\suites]。图片截图很简单,input.png是输入框的,请尽量截图让sikuli知道是唯一的。Submit.png是百度一下的按钮,截图放在[C:\robot\data]。以上内容均可以加入群247870083去群共享取Rf+sikuli+selenium例子.rar
。
*** Settings ***
Documentation Integrating Selenium, Sikuli into Robot Framework
Test Setup
Test Teardown Run Keyword If Test Failed Take Screenshot
Library Selenium2Library 15 # Selenium library
Library Remote http://localhost:${port} # Sikuli
Library Screenshot # Taking screenshots when a test fails
*** Variables ***
${url} http://www.baidu.com #百度网站
${browser} ff # Browser
${port} 8270 # Default port number for the remote server
${data_path} c:\\robot\\data # Sikuli images
${similarity} 0.90 # Used in Sikuli image comparison
${timeout} 10 # Time to wait for objects
*** Testcases ***
login To Baidu And Serch With Selenium
[Tags] selenium
登录百度首页
用slenium的方式输入并点击搜索
[Teardown] close all browsers
login To Baidu And Serch With Sikuli
[Tags] sikuli
登录百度首页
用sikuli的方式输入并点击搜索
*** Keywords ***
登录百度首页
open browser ${url} ${browser}
maximize browser window
用slenium的方式输入并点击搜索
input text wd selenium
click button kw
用sikuli的方式输入并点击搜索
Object Exists ${data_path}\\input.png \ ${similarity} ${timeout}
type at object ${data_path}\\input.png \ selenium ${timeout} ${similarity}
Object Exists ${data_path}\\submit.png \ ${similarity} ${timeout}
click object ${data_path}\\submit.png \ ${timeout} ${similarity}