Search code examples
pythonselenium-webdriverpopupundetected-chromedriver

how to click on pop up elements using undetected chromedriver


i am trying to make 5-star bot i have already done half work for getting login with gmail only place i am stuck is when it come to clicking on pop up window asking for starts and writing review i can't even click on cancel button.The pop up appears to be inside another iframe (#document)

My code

import time
import undetected_chromedriver as uc
from selenium.webdriver.common.keys import Keys
def login_Undetected():
   username = 'ABC@gmail.com'
   password ='ABC'
   driver = uc.Chrome()
   driver.get('https://accounts.google.com/ServiceLogin')
   time.sleep(2)
   driver.find_element_by_xpath('//input[@type="email"]').send_keys(username)
   time.sleep(2)
   driver.find_element_by_xpath('//*[@id="identifierNext"]').click()
   time.sleep(2)

   driver.find_element_by_xpath('//input[@type="password"]').send_keys(password)
   time.sleep(2)
   driver.find_element_by_xpath('//*[@id="passwordNext"]').click()
   time.sleep(2)
   driver.get('https://www.google.com/search?q=Flower%20shops&oq=flower+shops&aqs=chrome.0.69i59j69i57j0i271l3j69i60j69i61j69i60.1987j0j7&sourceid=chrome&ie=UTF-8&dlnr=1&sei=DW5lYsD7DNWEur4Pr8CT2A0&tbs=lf:1,lf_ui:10&tbm=lcl&sxsrf=APq-WBtzTXMsCEG8-8jHuqbpamowkj3Nlg:1650814482370&rflfq=1&num=10&rldimm=7685376553708120908&lqi=CgxGbG93ZXIgc2hvcHNIw4-b4dKtgIAIWhQQABABGAAiDGZsb3dlciBzaG9wc5IBD2Zsb3dlcl9kZXNpZ25lcpoBI0NoWkRTVWhOTUc5blMwVkpRMEZuU1VOdFgzVlFRMEpCRUFFqgEUEAEqECIMZmxvd2VyIHNob3BzKAA&phdesc=XQ9OeXHGpEI&ved=2ahUKEwiEv76Wg633AhVRLBoKHYiGAfIQvS56BAgMEAE&sa=X&rlst=f#dlnr=1&rlfi=hd:;si:7685376553708120908,l,CgxGbG93ZXIgc2hvcHNIw4-b4dKtgIAIWhQQABABGAAiDGZsb3dlciBzaG9wc5IBD2Zsb3dlcl9kZXNpZ25lcpoBI0NoWkRTVWhOTUc5blMwVkpRMEZuU1VOdFgzVlFRMEpCRUFFqgEUEAEqECIMZmxvd2VyIHNob3BzKAA,y,XQ9OeXHGpEI;mv:[[33.688926099999996,73.1433227],[33.5448866,72.9740797]];tbs:lrf:!1m4!1u3!2m2!3m1!1e1!1m4!1u2!2m2!2m1!1e1!2m1!1e2!2m1!1e3!3sIAE,lf:1,lf_ui:10')
   time.sleep(10)
   print('clicking ')
   driver.find_element_by_xpath('//*[@class="DvzRrc ab_button"]').click()
   print('Done')
   time.sleep(5)
   driver.find_element_by_xpath('//span[@class="VfPpkd-Jh9lGc"]').click()
   time.sleep(15)
   driver.find_element_by_xpath('//div[@aria-label="Five stars"]').click()
   time.sleep(3)
   driver.find_element_by_xpath('//*[@class="gLFyf gsfi"]').send_keys('cars')
   time.sleep(2)
   driver.find_element_by_xpath('//*[@class="gLFyf gsfi"]').send_keys(Keys.ENTER)
   time.sleep(50)
def main():
   login_Undetected()
if __name__ == "__main__":
   main()

The Problem i am facing is after line 24

the screen shot of pop up info


Solution

  • The elements i was trying to access was inside another i frame so i have to switch between them to interact with them i used

    driver.switch_to.frame(driver.find_element_by_name("IFRAME NAME"))
    #ENTER CODE HERE 
    #AFTER THAT SWITCH BACK TO DEFAULT WINDOW BY
    driver.switch_to.default_content()
    

    to switch between frames and that did the trick

    please remember to switch back after your work is done