Accessing the DOM of a QtWebKit Application
Hi. I need to do GUI testing on a Windows application, whose User Interface was done in QtWebKit.
It has an .exe with the QtWebKit container. Since I have to do automated GUI testing on it, I need to find a way to develop an API (or a WebDriver) in Python to interact with it.
I found several options to do so, like Froglogic Squish, Smartbear, but they are out of my budget.
Some of the options I found so far:
1- I heard Selenium automates web browsers. But I haven't found a way for it to interact with an application. Is it possible to adapt it?
2- I think it may be possible to run my application (in a QProcess for example), then "convert" it to a QtWebKit subclass and then interact with it with Signals and Slots (Or, just open it as a QtWebKit class). Here is some information about Signal and Slots:
3- Does anybody know how does Squish work? I know that you give Squish the application, and Squish interacts with it, but I don't know how it does it.
I'm working on Python and PyQt4.
Any example, suggestion, or any tool that could help will be greatly appreciated.
Thanks in advance!
I have got exactly same problem statement. Any help in this forum would be highly appreciated.
[quote author="FrancoLM" date="1361204797"]3- Does anybody know how does Squish work? I know that you give Squish the application, and Squish interacts with it, but I don't know how it does it.[/quote]
Short: Squish hooks directly into the process and accesses the data.
When squish is out your budget you can try to create a custom application...but i think thats connected with a lot of effort. See "this":http://www.codeproject.com/Articles/4610/Three-Ways-to-Inject-Your-Code-into-Another-Proces.
I can't really help with your other questions but i think question 2 isn't possible, instead you should go for my suggestion with the hooking.
Late answer, but option-1 (i.e Selenium WebDriver) is possible.
There is a WebDriver implementation for QtWebkit here: https://github.com/cisco-open-source/qtwebdriver .
It also can automate qtwidget, QML and hybrid applications.