Not a big fan of this much of a regimented pattern, effectively echoing the interface of controls on the page in order to interact with them.
I'm also more a fan of puppeteer which allows for better interaction over Selenium/webdriver.
Beyond all of this, I prefer to unit test heavily, and leave automated integration tests to problem workflows specifically.