简体   繁体   English

如何从 Python 的下拉菜单中获取 select 的值

[英]How to select a value from drop down menu in Python

I am trying to click on "Demonstrativo de Caixa" (value='4') with selenium.我正在尝试使用 selenium 单击“Demonstrativo de Caixa”(值 =“4”)。

Unfortunately I get this error every time: select = Select(driver.find_element(By.ID('ddlRelatorio'))).text TypeError: 'str' object is not callable不幸的是我每次都会收到这个错误: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 :对于 select 文本为Demostrativo de Caixa<option> ,您需要为element_to_be_clickable()引入WebDriverWait ,您可以使用以下任一定位器策略

  • Using CSS_SELECTOR :使用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 :使用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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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