Ваш вход "локализация" находится под iframe , поэтому вы не можете найти его
Вам нужно будет вызвать функцию WebDriver.switch_to () , чтобы изменить контекст на вышеупомянутый iframe, прежде чем пытаться взаимодействовать с элементами внутри него.
driver.switch_to.frame("IWEB_IFRAME_ID_SEARCH")
Также рассмотрите возможность рефакторинга вашего кода для удаления sleep
и использования Waits вместо этого, это сделает ваш тест намного быстрее, надежнее и надежнее. Более того, некоторые элементы загружаются с использованием технологии AJAX , поэтому они могут быть недоступны сразу, даже если Selenium «считает», что загрузка страницы завершена.
Предлагаемые изменения кода:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome("/usr/local/bin/chromedriver")
driver.maximize_window()
driver.get("https://www.immoweb.be")
elem1 = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.LINK_TEXT, "FRANCAIS")))
elem1.click()
elem2 = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.LINK_TEXT, "Maisons")))
elem2.click()
driver.switch_to.frame("IWEB_IFRAME_ID_SEARCH")
searchBar = elem2 = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.NAME, "localisation")))
searchBar.send_keys('hello')
driver.quit()