1

I'm trying to make simple login script with selenium at https://e.mail.ru/login

I can fill email field by adding ?email= after the link, so there is no problem, but driver can't find the password element, I tried the name, classname, xpath and css selector, and every time driver can't find the element. I've tried to use Selenium IDE addon in Firefox, used all the data which I could get from there with no luck.

driver = webdriver.Firefox(path)
driver.set_window_size(1920, 1080)
(email, password, name, lname, id) = account.split(';')
driver.get('https://e.mail.ru/login?email=' + email)
time.sleep(3)
driver.find_element_by_css_selector("input[name='Password']").send_keys(password)
driver.find_element_by_link_text('Sign in').click()
time.sleep(10)
print("Done!")
DebanjanB
  • 118,661
  • 30
  • 168
  • 217
Dark
  • 37
  • 3

1 Answers1

1

The desired element is within a <iframe> so you have to switch_to_it() and then locate the element inducing WebDriverWait for the element_to_be_clickable() and you can use either of the following Locator Strategies:

  • CSS_SELECTOR:

    driver=webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
    driver.get("https://e.mail.ru/login?email=dark")
    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe.ag-popup__frame__layout__iframe")))
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='Password']"))).send_keys("Dark")
    
  • XPATH:

    driver=webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
    driver.get("https://e.mail.ru/login?email=dark")
    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@class='ag-popup__frame__layout__iframe']")))
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='Password']"))).send_keys("Dark")
    
  • Browser Snapshot:

e_mail_ru

DebanjanB
  • 118,661
  • 30
  • 168
  • 217