Pitón. Selenio. ¿Cómo esperar a que se abra una nueva ventana?

Tengo un botón con Twitter, y después de hacer clic, se abre una nueva ventana, pero antes de abrir hay un tiempo de espera en unos segundos, ¿hay alguna forma de esperarlo? Me molesto de mala manera por ahora ...

    Ui.click_el(link.W9FormNodes.TWITTER_BUTTON)
    # Wait for new window and switch to it
    time.sleep(3)
    aw = driver.window_handles
    driver.switch_to_window(aw[1])

Entonces necesito algo mejor, que esperará solo la cantidad de segundos que necesite.

Creo que lo resuelvo de esta manera. Pero tal vez alguien tenga comentarios sobre cómo hacerlo mejor.

    aw = Ui.click_and_wait_for_window(link.W9FormNodes.TWITTER_BUTTON)
    driver.switch_to_window(aw[1])

Y aquí hay un método que hace clic en el botón y espera una nueva ventana:

    def click_and_wait_for_window(self, node):
        current_value = old_value = self.driver.window_handles
        self.click_el(node)
        while len(current_value) == len(old_value):
            time.sleep(0.05)
            current_value = self.driver.window_handles
        return current_value

Respuestas a la pregunta(2)

Su respuesta a la pregunta