Home > OS >  Unable to Populate Search Field in Python Selenium
Unable to Populate Search Field in Python Selenium

Time:09-28

I am trying to search www.oddschecker.com using Python and Selenium (chromedriver) but am struggling to populate the search field with the search term.

The code below clicks the magnifying glass ok but the send_keys statement does not populate the expanded search box.

Can anyone see the issue?

driver.find_element_by_xpath('//*[@id="top-menu"]/li[8]/ul/li[1]/span/span').click()

sleep(5)

driver.find_element_by_xpath('/html/body/div[1]/header/div[1]/div/div[1]/div/ul/li[8]/ul/li[1]/div/div/div/form/fieldset/input').send_keys('Bicep')

CodePudding user response:

  1. xpath is brittle, please use relative xpath. see below.
  2. Use explicit waits.
  3. Close modal pop up may appear sometime, may not appear sometime so better to wrap them inside try and except block.

Code :

driver = webdriver.Chrome(driver_path)
driver.maximize_window()
#driver.implicitly_wait(30)
wait = WebDriverWait(driver, 30)
driver.get("http://www.oddschecker.com/")
try:
    wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.js-close-class"))).click()
    print('Clicked on close button if it appears')
except:
    pass

wait.until(EC.element_to_be_clickable((By.XPATH, "//span[starts-with(@data-ng-click,'NavSearchCtrl')]"))).click()
search = wait.until(EC.visibility_of_element_located((By.ID, "search-input")))
search.send_keys('Bicep', Keys.RETURN)

Imports :

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