What is the best practice to avoid selectors not found, element or page not loaded and Activity timeout exceeded problems in web/UI automation

What is the best practice to avoid selectors not found, element or page not loaded and Activity timeout exceeded problems in web/UI automation development. How to get reliable selectors ? So if we write the code / use the specific selectors while development at one time, so in future there should not be any changes required ( If website selectors not changed).