I used to have troubles with UI tests too, but then I discovered Cypress (https://www.cypress.io/). You can still run into an issue once in a while, but it's way better than anything else and it's getting even better with each release.
The one time Selenium was reliable in my company was when our team had a dedicated, massively overprovisioned grid.
The biggest pro is it just has less random "Oh, guess that timed out?" issues than when we used Selenium.
The biggest negative is it's chrome only.
In practice, I have had much less flakiness in my Cypress tests than with selenium or other webdriver API.