A PageObject library for Java allowing maintainable UI testing and BDD methods