Comment puis-je faire Sélénium/Python attendre que l'utilisateur de connexion avant de continuer à courir?
Je suis en train de lancer un script en Sélénium/Python qui nécessite des connexions à différents points avant que le reste du script peut s'exécuter. Est-il possible pour moi de le dire, le script de pause et d'attente à l'écran de connexion pour l'utilisateur de saisir manuellement un nom d'utilisateur et le mot de passe (peut-être quelque chose qui attend le titre de la page pour changer avant de poursuivre le script).
C'est mon code pour l'instant:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import unittest, time, re, getpass
driver = webdriver.Firefox()
driver.get("https://www.facebook.com/")
someVariable = getpass.getpass("Press Enter after You are done logging in")
driver.find_element_by_xpath('//*[@id="profile_pic_welcome_688052538"]').click()
Vous devez vous connecter pour publier un commentaire.
Utilisation WebDriverWait. Par exemple, elle effectue une recherche sur google et puis attend un certain élément avant d'imprimer le résultat:
wait.until
renvoie le résultat de la fonction lambda, ou unselenium.common.exceptions.TimeoutException
si la fonction lambda continue à renvoyer un Falsey valeur après 10 secondes.Vous pouvez trouver un peu plus d'informations sur
WebDriverWait
dans le Le sélénium livre.driver.find_elements_by_*(...)
pour trouver cet élément. Utilisez-la dans lawait.until(...)
de commande.wait
n'a pas été défini. Recherchez la ligne qui commence parwait = ...
dans mon post ci-dessus. Copiez cette ligne de votre code. Depuis qu'il utiliseui
, vous aurez également besoin de la copie de la déclaration d'importation,import selenium.webdriver.support.ui as ui
.'
. Qui a déclenché moi.ALORS à chaque fois que vous voulez exécuter le script, vous tapez
loginUser()
et il fait son truccela fonctionne parce que
getpass.getpass()
fonctionne exactement commeinput()
, sauf qu'il ne marche pas montrer tout characthers ( ses) pour accepter les mots de passe et notshowing à tout le monde qui regarde l'écran)Donc ce qui arrive est de votre page se charge en place. puis tout s'arrête, Votre utilisateur manuellement les journaux, puis remonte à l'python CLI et touche entrée.
import getpass
etgetpass.getpass("press enter")
sont les parties importantes, j'ai utilisé le pseudo désolé, mauvais modifier ma réponse à être plus 'réaliste',