with scraping libreria from and python selenium selenium-webdriver web-scraping webdriver

scraping - Selenium-Python-valor de opción del menú desplegable



selenium webdriver python download (6)

A menos que su clic esté ejecutando algún tipo de llamada ajax para completar su lista, no necesita ejecutar el clic.

Simplemente encuentre el elemento y luego enumere las opciones, seleccionando la (s) opción (es) que desea.

Aquí hay un ejemplo:

from selenium import webdriver b = webdriver.Firefox() b.find_element_by_xpath("//select[@name=''element_name'']/option[text()=''option_text'']").click()

Puedes leer más en:
https://sqa.stackexchange.com/questions/1355/unable-to-select-an-option-using-seleniums-python-webdriver

Necesito seleccionar un elemento de un menú desplegable.

Por ejemplo, abre esto:

<select id="fruits01" class="select" name="fruits"> <option value="0">Choose your fruits:</option> <option value="1">Banana</option> <option value="2">Mango</option> </select>

  1. Así que primero tengo que hacer clic en él. Hago esto:

    inputElementFruits = driver.find_element_by_xpath("//select["id=''fruits'']).click()

(ok, está abriendo el menú)

  1. Y después de que tengo que seleccionar el buen elemento, digamos Mango. Intento algo diferente con inputElementFruits.send_keys(...) pero no funcionó.

La mejor forma de usar selenium.webdriver.support.ui.Select clase para trabajar con la selección desplegable, pero algunas veces no funciona como se esperaba debido a problemas de diseño u otros problemas del HTML.

En este tipo de situación, también puede preferir como solución alternativa el uso de execute_script() como se muestra a continuación:

option_visible_text = "Banana" select = driver.find_element_by_id("fruits01") #now use this to select option from dropdown by visible text driver.execute_script("var select = arguments[0]; for(var i = 0; i < select.options.length; i++){ if(select.options[i].text == arguments[1]){ select.options[i].selected = true; } }", select, option_visible_text);


Probé muchas cosas, pero mi menú desplegable estaba dentro de una tabla y no pude realizar una simple operación de selección. Solo la solución de abajo funcionó. Aquí estoy destacando elem desplegable y presionando la flecha hacia abajo hasta obtener el valor deseado -

#identify the drop down element elem = browser.find_element_by_name(objectVal) for option in elem.find_elements_by_tag_name(''option''): if option.text == value: break else: ARROW_DOWN = u''/ue015'' elem.send_keys(ARROW_DOWN)


Selenium proporciona una conveniente clase Select para trabajar con select -> option construcciones de select -> option :

from selenium import webdriver from selenium.webdriver.support.ui import Select driver = webdriver.Firefox() driver.get(''url'') select = Select(driver.find_element_by_id(''fruits01'')) # select by visible text select.select_by_visible_text(''Banana'') # select by value select.select_by_value(''1'')

Ver también:


en primer lugar, debe importar la clase Select y luego debe crear la instancia de Select class. Después de crear la instancia de la clase Select, puede realizar selecciones de métodos en esa instancia para seleccionar las opciones de la lista desplegable. Aquí está el código

from selenium.webdriver.support.select import Select select_fr = Select(driver.find_element_by_id("fruits01")) select_fr.select_by_index(0)


from selenium.webdriver.support.ui import Select driver = webdriver.Ie(".//IEDriverServer.exe") driver.get("https://test.com") select = Select(driver.find_element_by_xpath("""//input[@name=''n_name'']""")) select.select_by_index(2)

Funcionará bien