1

I am trying to access a dropdown menu using selenium for HTML that looks like this:

<span class="k-pager-sizes k-label">
<span title="" class="k-widget k-dropdown k-header" unselectable="on" role="listbox" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-owns="" aria-disabled="false" aria-readonly="false" aria-busy="false" aria-activedescendant="8e90d557-7e8d-4c5c-b906-202fd78c6d0a"><span unselectable="on" class="k-dropdown-wrap k-state-default">
<span unselectable="on" class="k-input">20</span><span unselectable="on" class="k-select">
<span unselectable="on" class="k-icon k-i-arrow-s">select</span>
</span>
</span>
<select data-role="dropdownlist" style="display: none;">
 <option value="10">10</option><option value="15">15</option>
 <option value="20">20</option><option value="50">50</option>
 <option value="100">100</option>
</select>
 <span>items per page</span>

I have tried the following without success:

try:
    driver = webdriver.Chrome('/Users/opusandcaymus/Election/chromedriver')
    driver.get('http://mcad-tx.org/Property-Search-Result?searchtext=Maple%20Branch')
    #dropdown=driver.find_element_by_xpath('//*[@id="grid"]/div[3]/span[2]/span/select')
    #select = Select(dropdown)
    dropdown = driver.find_elements_by_tag_name("option")
    for row in dropdown:
        print(row.value)
    driver.close()
except:
    print("error")
    driver.close()
    raise

Does anyone know how to find the options by the values? I want to select 100 every time the page is opened.

1 Answer 1

1

Your select dropdown is hidden so for that i would suggest first make it visible using javascriptexecuter then select the value

Use below code :

element=driver.find_element_by_xpath("//select[@data-role='dropdownlist']")
driver.execute_script("arguments[0].setAttribute('style', 'display: block;')",element)
select = Select(element)
select.select_by_value("100")

And The other way is use Explicitwait First click on down arrow and of dropdown and then click on value 100

Something like below code in python :

from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
element = wait.until(EC.visibility_of_element_located((By.XPATH, ".//*[@id='grid']/div[3]/span[2]/span/span/span[2]/span")))
element.click

element = wait.until(EC.visibility_of_element_located((By.XPATH, ".//ul[@data-role='staticlist']/li[5]")))
element.click

Note : please make correction as per python syntax

Sign up to request clarification or add additional context in comments.

1 Comment

Flawless. Thanks for both answers. I'm still learning how to use JavaScript in Selenium from Python. Very helpful.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.