Как уже упоминалось @Asyranok , вы должны дождаться появления элемента:
from selenium import webdriver
import selenium.webdriver.support.ui as ui
driver = webdriver.Firefox()
wait = ui.WebDriverWait(driver, 10)
driver.get('https://mail.yahoo.com')
login = driver.find_element_by_id('login-username')
login.clear()
login.send_keys('johndoe')
login.submit()
wait.until(lambda driver: driver.find_element_by_id('login-passwd'))
pwd = driver.find_element_by_id('login-passwd')
pwd.send_keys('12345')
Не совсем. PIL в значительной степени, что все используют. Я никогда не испытывал трудностей с ним сам. Однако, если Вам действительно не нравится он, Вы могли бы проверить PythonMagick или PythonMagickWand, которые являются обертками вокруг ImageMagick, который может быть больше к Вашему вкусу.
Если под "лучшим" вы подразумеваете "более быстрый" или "менее интенсивный" или (большой в моих экспериментах) "способный обрабатывать намного большие изображения", то вы можете использовать интерфейс Python для VIPS:
http://www.vips.ecs.soton.ac.uk/index.php?title=Python
Однако, если "лучший" означает "хорошо протестированный на Python" или "дружественный к Windows", то это означает "хорошо протестированный на Python" или "дружественный к Windows"," VIPS не впишется в счет.