I'm trying to run a script in Selenium/Python that requires logins at different points before the rest of the script can run. Is there any way for me to tell the script to pause and wait at the login screen for the user to manually enter a username and password (maybe something that waits for the page title to change before continuing the script).
This is my code so far:
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()
Use WebDriverWait. For example, this performs a google search and then waits for a certain element to be present before printing the result:
wait.until
will either return the result of the lambda function, or aselenium.common.exceptions.TimeoutException
if the lambda function continues to return a Falsey value after 10 seconds.You can find a little more information on
WebDriverWait
in the Selenium book.THEN whenever you want to run the script, you type
loginUser()
and it does its thingthis works because
getpass.getpass()
works exactly likeinput()
, except it doesnt show any characthers ( its for accepting passwords and notshowing it to everyone looking at the screen)So what happens is your page loads up. then everything stops, Your user manually logs in, and then goes back to the python CLI and hits enter.