daluu / AutoItDriverServer

AutoIt through WebDriver or a webdriver-compatible server for AutoIt
30 stars 8 forks source link

Will there be any future updates? #7

Open kmreed2 opened 8 years ago

kmreed2 commented 8 years ago

Hi David - I love the work you've done. I recently completed a project with the AutoItX4Java library and ran into some issues with running it on the Selenium grid. I've done a great deal of research on what is possible in this regard and thus far have found nothing in regard to using AutoItX4Java.

However, I came across your project and it sounds like exactly what I need. I am not skilled enough to contribute much with where you are on the project, but was wondering if there were plans to continue on or if anyone else had picked it up? To me, this is possibly one of the most valuable automation tools I've come across and would love to see it finished.

Hope all is well! Thanks for the work you've already done!

daluu commented 8 years ago

Glad you found the project useful. I haven't worked on this in a while. While there is no roadmap timeline on updates to this project, I do intend to go back to it at some point, it's a pet project of mine.

And no one has yet come forward to help improve it or take over the project.

Is there something specific you're looking for in terms of updates/completion? I take it is the Selenium Grid support?

Your post has given me some inspiration to continue, so let's see if I can find some time in the near term to try and tackle that.

kmreed2 commented 8 years ago

I wish I had the technical know how to help you with it, but you've already exceeded my level of contribution. Maybe someday :). Of all the research I've done, it's definitely one of the most useful tools I've seen. I am trying to work with GUI and web applications and this would solve all of my problems.

From what I've read and understand of your current project, some way of working with the grid so that AutoIt can execute in that way would be amazing. I am currently trying several different solutions to this problem with AutoItX4Java and none of them are very clean.

We are also using Java - I've not been able to experiment enough to know whether or not the Python server would be an issue or if that is something easily overcome.

I understand time commitment though, but it shows an infinite amount of promise from my perspective. Hope to see more in the future!

daluu commented 8 years ago

Well, there's never going to be native integration for AutoIt & Selenium in terms of Grid support, due to their being separate tools and architecture. But there is already some support for integration that I will outline below.

The Selenium grid support that I will add for this project is allowing AutoItDriverServer to run as a node under Grid, but that doesn't mean you can use it together with a Selenium test as they will be separate sessions & drivers (but potentially both under grid as nodes, can be same node if you set up the grid test deployment correctly).

So the other side of Selenium grid support is how to tie AutoIt and Selenium together when Selenium is run under Grid (whether AutoIt runs under grid as a node or not does not matter in this context). How to do it is currently available:

  1. Fetch the IP address of the node the Selenium browser session is running under Grid. You can find details in Java, C#, Python here: https://gist.github.com/krmahadevan/1766772. But you'll first need to fetch the session ID out of WebDriver (search the Selenium User groups) to then use to query for the IP address.
  2. With the IP address, you can then choose how to execute AutoIt on that node (via PSExec, winexe, SSH, connecting to AutoItDriverServer running on that node). So, in the context of this project, if you run an instance of the (python) AutoItDriverServer on every Windows node that runs Selenium, if you get the IP of the Selenium node then you can connect to AutoItDriverServer on that same node (assuming use of static known ports). AutoItDriverServer itself does not have to be registered with the grid hub for this to work, but that doesn't hurt (when I add support for that).

Now if you prefer to have this setup be more integrated with Selenium, not using python but Selenium server JAR, the easiest solution would be to try the grid plugin custom servlet option for Selenium Grid:

http://docs.seleniumhq.org/docs/07_selenium_grid.jsp#customizing-the-grid

implement AutoItX4Java interface in that servlet and call that servlet API/URL to invoke it to execute AutoIt commands. Not sure if anyone has already done that before, but I'm considering doing that with a general purpose interface/API, the thought just crossed my mind recently. When I get to it though, it will be a new project, not here because while it addresses a similar need, the solution/design works differently.

daluu commented 8 years ago

Also, forgot that I made a gist a while back on the options for Grid & AutoIt integration: https://gist.github.com/daluu/3b4746f6b672c49f7e8f

daluu commented 8 years ago

Thought I posted this earlier but guess not, so putting here to track as reference. This is how you'd be able to hook AutoItDriverServer into Selenium grid as a node to a hub. But this only covers that part of grid-node connectivity support. Figuring out how to match AutoItDriver to a web browser driver on the same node machine for grid enabled tests is a different matter addressed in my previous comments.

http://stackoverflow.com/questions/30055449/selenium-grid-specifications

I'll test it out and document for this project later when I have time.