Skip to main content

easy use of selenium and appium

Project description

easyium is an easy-to-use wrapper for selenium&appium and it can make you more focus on business not the element.

Find the latest version on github: or PyPI:


  • easyium provides unified apis to test on browsers and devices.
  • easyium adds a global implicit wait for elements and you rarely need to consider waiting a element to be visible or existing.
  • easyium introduces a simple and clear way to build model objects for UI.
  • easyium has a better performance, the element will lazily load WebElement reference and reuses it if necessary.
  • easyium provides easy-to-use wait method for element. e.g., my_element.wait_for().not_().exists()
  • easyium provides a simple way to define a locator. e.g., use "xpath=.//mytag" instead of By.XPATH, ".//mytag"
  • easyium provides a mechanism to avoid StaleElementReferenceException.


The last stable release is available on PyPI and can be installed with pip.

$ pip install easyium



It is a wrapper for selenium&appium’s web driver. You can create a new instance by providing web driver type.


DynamicElement is one type of Element in easyium. It refers to the element which is dynamic relative to its parent.

You can get it only by calling WebDriver.find_element(locator) or Element.find_element(locator) and you can not create a new instance by yourself.


StaticElement is the other type of Element in easyium. It refers to the element which is static relative to its parent.

You can create a new instance by providing parent and locator.


For detailed examples, please refer to the examples folder in source distribution or visit

Contact me

For information and suggestions you can contact me at

Change Log

1.3.7 (compared to 1.3.6)

  • Add web_driver.get_viewport_size, web_driver.set_viewport_size

1.3.6 (compared to 1.3.5)

  • Support appium>=0.46

1.3.5 (compared to 1.3.4)

  • Optimize condition in Context.find_element(s).

1.3.4 (compared to 1.3.3)

  • Fix InvalidElementStateException is not caught.

1.3.3 (compared to 1.3.2)

  • Fix Element.set_selection_range() issue.

1.3.2 (compared to 1.3.1)

  • Handle ElementNotInteractableException in element actions.

1.3.1 (compared to 1.3.0)

  • Support selenium>=3.141.0 and appium>=0.30
  • Implement double_click and context_click for safari.

1.3.0 (compared to 1.2.10)

  • Support appium>=0.27 and add the new actions.
  • Shorten the locator name. e.g., accessibility_id -> acc_id
  • Add waiting for WebDriver.switch_to_context.

1.2.10 (compared to 1.2.9)

  • Support selenium>=3.13.0 and appium>=0.26

1.2.9 (compared to 1.2.8)

  • Support selenium>=3.8.0 and appium>=0.25

1.2.8 (compared to 1.2.7)

  • Fix desired_capabilities issue.

1.2.7 (compared to 1.2.6)

  • Fix the string format of web driver.

1.2.6 (compared to 1.2.5)

  • Add Remote web driver back.
  • Support selenium>=3.6.0
  • Remove Android, Ios driver.

1.2.5 (compared to 1.2.4)

  • Enhance element actions.

1.2.4 (compared to 1.2.3)

  • Support selenium>=3.4.0
  • Add Remote web driver.

1.2.3 (compared to 1.2.2)

  • Support selenium>=3.0.2, appium>=0.24
  • Add focus() for element.

1.2.2 (compared to 1.2.1)

  • Add waiting for WebDriver.switch_to_frame().
  • Add WebDriver.wait_for().reloaded().

1.2.1 (compared to 1.2.0)

  • Remove at_least argument in context.find_elements.
  • Support find element(s) condition in Context.find_element(s).

1.2.0 (compared to 1.1.5)

  • Add WebDriver Ie, Firefox, Chrome, Opera, Safari, Edge, PhantomJS, Ios and Android.
  • Add scroll_to() in WebDriver.
  • Add has_child() in Context.
  • Add get_center() in Element.
  • Add wait_for_server_started() in utils.
  • Support WebDriver.wait_for().text_equals(), WebDriver.wait_for().activity_present().
  • Support with statement for WebDriver.
  • Support at_least in Context.find_elements().
  • Support drag_and_drop_to_with_offset, drag_and_drop_by_offset for mobile.
  • Remove pre and post wait time.

1.1.5 (compared to 1.1.4)

  • Add scroll(), switch_to_new_window() to WebDriver.
  • Add scroll(), scroll_into_view() to Element.
  • Raise InvalidLocatorException when the locator is invalid.

1.1.4 (compared to 1.1.3)

  • Add get_screenshot_as_xxx() to Element.

1.1.3 (compared to 1.1.2)

  • Add docstring for apis.
  • Add post wait time for waiter.

1.1.2 (compared to 1.1.1)

  • Add pre wait time for waiter.

1.1.1 (compared to 1.1.0)

  • Optimize the waiter.
  • Add blur() for class Element.

1.1.0 (compared to 1.0.0)

  • Refactor the waiter.


  • Baby easyium.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for easyium, version 1.3.7
Filename, size File type Python version Upload date Hashes
Filename, size easyium-1.3.7.tar.gz (36.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page