How to access popup login window in selenium using Python

23 Sep, 2021
Many websites use sign-in using social media to make the login process easy for users. In most cases, if the button is clicked then a new popup window is opened where user has to enter their user credentials. Manually one can switch windows in a browser and enter the required credentials to log in. But in case of unattended web access using webdriver, the driver can not just switch the windows automatically. We need to change the window handle in the driver to enter the login credentials in the popup window. Selenium have the function to switch the window to access multiple windows using the same driver.First, we have to get the current window handle from a webdriver which can be done by:  
driver.current_window_handle
We need to save it in order to get the to the current window handle. After the popup window appears we have to get the list of all the window handles available right now.  
driver.window_handles
Then we can get the window handle of the login page from this list and then switch the control. To switch window handle, use:  
driver.swtich_to.window(login_page)
After successful login we can use the same switch_to method to change control to the previous page. Note: To run this code selenium library and geckodriver for firefox is required. The installation of selenium can be done using Python third-party library installer pip. To install selenium run this command  
pip install selenium
For geckodriver, download the file and add it’s path to the OS PATH variable, so that it can be activated from anywhere in file directory.Let’s see the code for login on zomato.com using Facebook. 
Python3
# import the libsfrom selenium import webdriverfrom time import sleep # create the initial windowdriver = webdriver.Firefox() # go to the home pagedriver.get('https://www.zomato.com') # storing the current window handle to get back to dashboardmain_page = driver.current_window_handle # wait for page to load completelysleep(5) # click on the sign in tabdriver.find_element_by_xpath('//*[@id ="signin-link"]').click() sleep(5) # click to log in using facebookdriver.find_element_by_xpath('//*[@id ="facebook-login-global"]/span').click() # changing the handles to access login pagefor handle in driver.window_handles:    if handle != main_page:        login_page = handle         # change the control to signin page       driver.switch_to.window(login_page) # user input for email and passwordprint('Enter email id : ', end ='')email = input().strip()print('Enter password : ', end ='')password = input().strip() # enter the emaildriver.find_element_by_xpath('//*[@id ="email"]').send_keys(email) # enter the passworddriver.find_element_by_xpath('//*[@id ="pass"]').send_keys(password) # click the login buttondriver.find_element_by_xpath('//*[@id ="u_0_0"]').click()   # change control to main pagedriver.switch_to.window(main_page) sleep(10)# print user namename = driver.find_element_by_xpath('/html/body/div[4]/div/div[1]/header/div[2]/div/div/div/div/span').textprint('Your user name is : {}'.format(name)) # closing the windowdriver.quit()
Output:  
 
anikakapoor
python-utility
selenium
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
Different ways to create Pandas Dataframe
Enumerate() in Python
Read a file line by line in Python
Python String | replace()
How to Install PIP on Windows ?
*args and **kwargs in Python
Python Classes and Objects
Python OOPs Concepts
Iterate over a list in Python