问题
I'm extensively using Selenium for integration testing. Works great for all normal stuff (HTML/AJAX), but no go when I'm trying to test third party ActiveX, Java applets and Flash components.
The solution I've found for this is Sikuli. Works great locally, but how can I integrate that into Selenium?
btw. if that's relevant, for Selenium I'm using Python API.
回答1:
See the Python section of the Selenium RC documentation: http://seleniumhq.org/docs/05_selenium_rc.html#python
You may be able to run Selenium tests from Jython. In that case, you can simply integrate Selenium scripts into your Sikuli scripts.
Try the following in the Sikuli IDE. You may need to modify the import statements to point to specific files in the Selenium project.
from selenium import selenium # this will probably need tweaking...
slm = selenium("localhost", 4444, "*firefox", "http://www.google.com/")
slm.start()
# etc...
This guy appears to have had success controlling Selenium from Jython: http://adam.goucher.ca/?p=367
My conclusion: it will probably be easiest to stay in Jython and control Selenium from there. You could integrate both tools into a single script.
回答2:
It is possible to have Sikuli capabilities on Selenium Grid. It requires extra libraries to be installed on every node and hub.
Check this project to learn more
https://github.com/sterodium/selenium-grid-extensions
回答3:
If one doesn't need to use custom or specific test framework, one option is Robot Framework (RF). It has a Selenium library, and there is a how to on how to use Sikuli with RF. With that in mind, you could combine the two together using RF. Plus RF has some nice test automation framework features built in.
robotframework.org
http://blog.mykhailo.com/2011/02/how-to-sikuli-and-robot-framework.html
http://code.google.com/p/robotframework-seleniumlibrary
回答4:
You can extend the Selenium Server so it will be able to execute SIKULI scripts (see this on how to call them from Java).
However you will need to develop in Java as Selenium Server is a Java app.
回答5:
If you want to run Sikuli functions remotely on a Selenium Grid, then it seems like you would have to do it with Selenium Augmenter somehow. None of the answers here show how a remote Grid, such as with using SauceLabs, would acquire Sikuli functionality. Perhaps the Selenium project has yet to augment the Augmenter class to load external libraries like Sikuli?
For this reason, when I use Sikuli, I always have to use a non-remote , standard, local, WebDriver instance.
来源:https://stackoverflow.com/questions/3666140/how-to-integrate-sikuli-scripts-into-selenium