anti-patterns
(1) implicit wait. this will create subtle differences in behavior between drivers. it will also create long pauses when you test for negative conditions.
(2) clear. selenium has built in support for clear[1]. in addition to clear you can send the null key[2] if you want to clear the input midway through a sequence of characters.
(3) time wait. this does not make any sense to me. seems like a clever way to add time.sleep.