1

Unable to select the kendo dropdown using below code. The site can be reachable for checking the code.

<span unselectable="on" class="k-dropdown-wrap k-state-default"><span unselectable="on" class="k-input">Chang</span><span unselectable="on" class="k-select" aria-label="select"><span class="k-icon k-i-arrow-60-down"></span></span></span>



Code: 
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome('./chromedriver')
driver.get("https://demos.telerik.com/kendo-ui/dropdownlist/remotedatasource")
select = driver.find_element_by_xpath('//*[@id="example"]/div/span/span/span[1]')[0]
select.SelectByValue("Chang");
print('Success')
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
Sid D
  • 25
  • 2
  • 5

1 Answers1

2

To select the item with text as Chang within the kendo dropdown using Selenium you you have to induce WebDriverWait for the element_to_be_clickable() and you can use either of the following Locator Strategies:

  • Using CSS_SELECTOR:

    driver.get("https://demos.telerik.com/kendo-ui/dropdownlist/remotedatasource")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.k-widget.k-dropdown[aria-owns='products_listbox']"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.k-animation-container>div#products-list ul li[data-offset-index='1']"))).click()
    
  • Using XPATH:

    driver.get("https://demos.telerik.com/kendo-ui/dropdownlist/remotedatasource")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='k-widget k-dropdown' and @aria-owns='products_listbox']"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='k-animation-container']/div[@id='products-list']//ul//li[text()='Chang']"))).click()
    
  • Note : You have to add the following imports :

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

Browser Snapshot: Chang

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
  • 1
    It's works, have any documentation for kendo controls check box, multi select, grid, etc using python selenium? Thanks in advance – Vignesh Dec 30 '19 at 09:09
  • @Vignesh I am not sure of any specific documentation but if you have raised a question I will like to have a look at it. – undetected Selenium Dec 30 '19 at 09:22
  • How can we select by dropdpwn list id? because xpath or css selector getting changed when we do changes in html and it requires to update xpath or css selector in test case code. What is an efficient way to handle this kind of situation? – Vignesh Mar 07 '20 at 09:00