microsoft / WinAppDriver

Windows Application Driver
MIT License
3.66k stars 1.4k forks source link

WinAppDriver without Appium Dependencies #1906

Open FunkyFinch opened 1 year ago

FunkyFinch commented 1 year ago

I've been looking at WinAppDriver and it states that Appiim is optional, but all examples I find seem to be using WebDriver from Appium. I'm trying to minimize extra dependencies, so I'd like to try it without Appium, but. Ant seem to find an example.

Does anyone have an example, or is there a language that has less dependencies? C# relies on the Appium nugget package, which has a slee of its own dependencies. Looks like Python may only require the Appium Python Client.

anunay1 commented 1 year ago

What are the dependency you want to avoid?

FunkyFinch commented 1 year ago

I'd like to avoid any optional dependencies. I'd also like to have the fewest dependencies. C# seems to have multiple dependencies (due to Appium requiribg other packages). I'm looking at Python now, hoping it has fewer.

FunkyFinch commented 1 year ago

Wrong button click above.

anunay1 commented 1 year ago

Please don't go with python, you will land up in all kind of issues and ther will not be any support from Microsoft

FunkyFinch commented 1 year ago

From the looks of it, there doesn't seem to be support from Microsoft in general. What sort of difficulties does python bring?

anunay1 commented 1 year ago

https://github.com/microsoft/WinAppDriver/issues/1784 Check the above ticket

FunkyFinch commented 1 year ago

Seems like mismatches in versions. Are there any other difficulties I should examine before really diving into Python here?

Also, still wondering if it can be run without Appium. That thread requires Appium still, too.

anunay1 commented 1 year ago

The ticket i shared has two tickets and both are blockers

kzO8Xekb commented 1 year ago

@FunkyFinch

Appium is not required to use WinAppDriver (WAD). It is possible to establish sessions with WAD servers in a variety of languages without Appium.

In fact, it is even possible to establish a WAD session with Powershell.

A session with a WAD server requires an HTTP client capable of executing the GET, DELETE and POST methods.

It should be relatively easy to write a WAD client if an HTTP client package exists for the language you want. Perhaps Python also has an HTTP client. You could use that.

If an HTTP client package does not exist in the language you want, or you do not want to use an existing package, then you need to start your work by writing an HTTP client.

For more information on how to establish a session between a WAD client and a WAD server, and the JSON object data to be sent and received, see the JSON Wire Protocol specification. JSON Wire Protocol Specification

The following article is a good reference for WAD server endpoints. Supported APIs

kzO8Xekb commented 1 year ago

@FunkyFinch

It's embarrassing, but here is a WAD client that works without Appium. I wrote this WAD client in Common Lisp to try it out.

Hopefully you are not bracket-phobic.

win-app-driver