Home > Software engineering >  Message: Unable to locate element, Selenium Python
Message: Unable to locate element, Selenium Python

Time:10-07

I'm trying to get access to this page "fullcollege" with a bot I'm making for students. The problem is that I can't even select an element from it, and this error shows up. I have recently tested my code with another webpages like instagram and everything works perfectly. Anyone knows what can I do to solve this? Thanks in advance.

My code:

from time import sleep
from selenium import webdriver

browser = webdriver.Firefox()
browser.implicitly_wait(5)

browser.get('https://www.fullcollege.cl/fullcollege/')

sleep(5)

username_input = browser.find_element_by_xpath("//*[@id='textfield-3610-inputEl']")
password_input = browser.find_element_by_xpath("//*[@id='textfield-3611-inputEl']")

username_input.send_keys("username")
password_input.send_keys("password")

sleep(5)

browser.close()

The error:

Traceback (most recent call last):
  File "c:\Users\marti\OneDrive\Escritorio\woo\DiscordBot\BetterCollege\tester.py", line 11, in <module>
    username_input = browser.find_element_by_xpath("//*[@id='textfield-3610-inputEl']")
  File "C:\Users\marti\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "C:\Users\marti\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
  File "C:\Users\marti\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\marti\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: //*[@id='textfield-3610-inputEl']

CodePudding user response:

The username and password field is inside and iframe you need to switch it first.

browser.get('https://www.fullcollege.cl/fullcollege/')
WebDriverWait(browser,10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#logFrame")))
sleep(5)

username_input = browser.find_element_by_xpath("//input[@id='textfield-3610-inputEl']")
password_input = browser.find_element_by_xpath("//input[@id='textfield-3611-inputEl']")

username_input.send_keys("username")
password_input.send_keys("password")

import below libraries as well.

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
  • Related