In this chapter, we had a look at various different ways of creating page objects. It should now be clear that there are many slightly different ways to implement them. One of the key things to remember is to try and use your page objects to reduce duplication, which in turn will make your code concise and your automated checks readable. Another thing to remember is to put your assertions into your tests, not inside your page objects. Page objects are used to control the web page that you are testing. Methods annotated with @Test are used to validate that the web page you are testing does what it is expected to do.
By the time you have finished reading this chapter, you will understand that page objects do not need to define actual pages, they can just define collections of related objects. As a result you will be confidently building highly readable fluent page objects...