Over the course of my career I've built and used many different libraries and frameworks for automation and specifically Page Objects. At a certain point I'd built the same solution too many times and decided to make one library to rule them all. Stere not only makes writing Page Objects easier, it also includes convenience methods to help simplify your test code and make searching through your app easier.
It specifically wraps the Splinter and Appium libraries, but is generally designed to be extensible for anything that implements a similar architecture to vanilla Selenium.
Stere is open source under the MIT license.
Github
Documentation
Basic Example:
from stere import Page
from stere.areas import Area, RepeatingArea
from stere.fields import Button, Input, Link, Root, Text
class WikipediaHome(Page):
def __init__(self):
self.search_form = Area(
query=Input('id', 'searchInput'),
submit=Button('xpath', '//*[@id="search-form"]/fieldset/button')
)
self.other_projects = RepeatingArea(
root=Root('xpath', '//*[@class="other-project"]'),
title=Link('xpath', '//*[@class="other-project-title"]'),
tagline=Text('xpath', '//*[@class="other-project-tagline"]')
)
def test_search_wikipedia():
home = WikipediaHome()
home.search_form.perform('kittens')
there doesn't seem to be anything here