This library will be a simple extension of the official Python bindings, through subclassing, to add the new methods. I would like to maintain the same package structure, so that switching to the Appium library would be a matter of changing the import.
The official client allows for three ways to interact with the server: with the
selenium
class, with the webdriver.Remote
class, and with specific browser
classes, which subclass webdriver.Remote
in webdriver.*
classes. It seems
like we would not need to update the browser classes for our use case, and the
first is for RC, which we don't support. Thus we can subclass the official
webdriver.Remote
classes and add the new methods. Otherwise we would need to
use composition, since we have to change the base class and subclasses.
Usage will remain as it currently is, using the first two methods from above, other than importing from Appium:
from appium import webdriver
desired_caps = {}
# ...
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
print driver.get_window_size()
elem = driver.find_element_by_name('Graphics')
elem.click()
driver.quit()
As Selenium catches up, the methods can be seemlessly removed from the Appium client. Any methods outside of the spec can remain and be used without issue, should the user choose.