Selenium – Python – 下拉菜单选项值

我需要从下拉菜单中select一个元素。

例如,打开这个:

<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. 所以首先我必须点击它。 我这样做:

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

(好吧,它打开菜单)

  1. 我必须select好的元素后,让我们说芒果。 我尝试inputElementFruits.send_keys(...)不同的事情,但它没有奏效。

除非你的点击是发射某种Ajax调用来填充你的列表,你实际上不需要执行点击。

只要find元素,然后枚举选项,select你想要的选项。

这里是一个例子:

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

你可以阅读更多:
https://sqa.stackexchange.com/questions/1355/unable-to-select-an-option-using-seleniums-python-webdriver

Selenium提供了一个方便的Select类来处理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') 

也可以看看:

  • select使用Selenium的Python WebDriver的正确方法是什么?

我尝试了很多东西,但是我的下拉是放在桌子里面的,我不能执行简单的select操作。 只有下面的解决scheme工作。 在这里,我强调下拉元素,并按下箭头,直到获得所需的值 –

  #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.webdriver.support.ui.Select类来处理下拉select的最好方法,但是由于devise问题或其他HTML问题,有时候它不能按预期工作。

在这种情况下,您也可以select使用execute_script()作为备用解决scheme,如下所示:

 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); 
 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) 

它会正常工作