I'm trying to locate an element in a form, but for some reason Selenium keeps throwing an error saying it can't be found. Here is the simple code that I'm using. Can anyone decipher why this isn't working? It looks like a basic HTML form.
driver = uc.Chrome()
driver.get('https://www.stumblechat.com/register')
username = driver.find_element(By.ID, 'user')
CodePudding user response:
There are 2 problems here:
- You have to wait for element appearance. The best approach is to use
WebDriverWait
expected_conditions
explicit waits. - That element has different locator. You probably looking for element located by this CSS Selector:
input[name='username']
.
If so, your code can be like following:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument("start-maximized")
webdriver_service = Service('C:\webdrivers\chromedriver.exe')
driver = webdriver.Chrome(options=options, service=webdriver_service)
wait = WebDriverWait(driver, 10)
url = "https://stumblechat.com/register"
driver.get(url)
username = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='username']")))