简体   繁体   中英

How to select a value from drop down menu in Python

I am trying to click on "Demonstrativo de Caixa" (value='4') with selenium.

Unfortunately I get this error every time: select = Select(driver.find_element(By.ID('ddlRelatorio'))).text TypeError: 'str' object is not callable

<select name="ddlRelatorio" onchange="javascript:setTimeout('__doPostBack(\'ddlRelatorio\',\'\')', 0)" id="ddlRelatorio" style="width:100%;">
<option selected="selected" value="0">Selecione...</option>
<option value="3">Carteira Diária</option>
<option value="4">Demostrativo de Caixa</option>
<option value="5">Posição Diária - Código ISIN Nulos</option>
<option value="6">Fluxo de Caixa</option>
<option value="15">Bloqueio Renda Fixa - Por Corretora/Bolsa</option>
<option value="16">Bloqueio Renda Variável</option>
<option value="17">Extrato - CBLC</option>
<option value="18">Extrato - SELIC</option>
<option value="19">Mapa de Evolução de Cotas</option>
<option value="20">Movimentação Patrimônio Líquido</option>
<option value="21">Movimento de Futuros</option>
<option value="22">Movimento de Renda Variável</option>
<option value="23">Operações Renda Fixa - Simplificado</option>
<option value="24">Posição de Swap</option>
<option value="25">Posição por Cliente - Detalhe</option>
<option value="26">Posição por Cliente</option>
<option value="27">Posição Renda Fixa Detalhado</option>
<option value="28">Posição Renda Fixa Simplificado</option>
<option value="52">Cotas de Patrimônio de Fundos</option>
<option value="54">Posição, Movimentação e Eventos</option>
<option value="55">Rebate de Taxas</option>

</select>

This is my code:

 Select(driver.find_element(By.ID('ddlRelatorio')))
 select.select_by_visible_text('Demostrativo de Caixa')
 select.click()

To select the <option> with text as Demostrativo de Caixa you need to induce WebDriverWait for the element_to_be_clickable() and you can use either of the following locator strategies :

  • Using CSS_SELECTOR :

     Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select#ddlRelatorio[name='ddlRelatorio']")))).select_by_visible_text("Demostrativo de Caixa")
  • Using XPATH :

     Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@id='ddlRelatorio' and @name='ddlRelatorio']")))).select_by_visible_text("Demostrativo de Caixa")
  • 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 from selenium.webdriver.support.ui import Select

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM