Как избавиться от таймаутов?
Следующая строчка может быть выполнена, но если в ней не будет элемента, то будет эксепшен.
Асинхронные подгрузки на странице, непредсказуемые изменения в DOM?
Думаю, для этого вам нужно использовать методы типа wait until element is visible, делать проверки is present, is displayed etc. 
На практике было такое, с очень сложным и неконсистентным поведением. Использовать вплоть до try/except, вылавливая эксепшены и подстраивая поведение.
Только после. Но не всегда, потому что selenium полон магии. Используйте явные ожидания, это лучший путь.