At my company we are developing a Desktop application and regression after regression we finally decided to implement the acceptance tests in addition to the unit tests.

I am relying on [this](https://github.com/cisco-open-source/qtwebdriver) project to use selenium in our application (I tested it and works flawlessly, we use QML to build the front-end and it's translated in XML). 

While I was designing the tests architecture, anyway, I had a doubt: how can I guarantee that every single test scenario is self-contained and totally independent from the others? 

In web application testing this is not a big deal since the front-end is usually divided among multiple html pages and urls. The "given" preconditions can be easily guaranteed by requesting the right url and, usually, in the worsts scenarios, it's just needed to execute a few instructions.

With desktop applications, however, it's a totally different story. You can't just ask for the page you want to comply with the preconditions. To get to a certain state you may need to execute multiple commands. 
In our case many of these commands require 30+ seconds to be executed. 
It seems like that the best way to test every feature, with their scenarios, is to execute them one after another, in a precise order. But that's totally against the testing principles.

What I am missing? Which are the best practices in this case? Is just selenium too restrictive for our needs?