如何使用Selenium Python选择下一个下拉菜单

时间:2019-03-22 05:44:56

标签: python selenium-webdriver drop-down-menu

我需要选择第二,第三和最后一个下拉菜单selenium python。

我可以选择第一个下拉菜单,但是不知道如何选择下一个下拉菜单。 为了选择第一个下拉菜单,我使用了以下命令

from selenium import webdriver
driver =webdriver.Firefox()
driver.get("https://pmfby.gov.in")
driver.maximize_window()
em = driver.find_element_by_partial_link_text("Calculator")
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
ActionChains(driver).click(em).perform()
Select(driver.find_element_by_tag_name("select")).select_by_index(2)

网页截图如下:enter image description here

请帮助我解决此问题。

2 个答案:

答案 0 :(得分:0)

由于下拉菜单placeholder的文字与页面上所有下拉菜单的文字相同,因此您可以使一个通用函数从下拉菜单中选择值并在需要时调用它。

您可以这样做:

def select_dropdown_value(dropdown_number):
    select = Select(driver.find_element_by_xpath("(//select[@placeholder='Select Pack'])["+dropdown_number+"]")))
    select.select_by_index(1)

现在您可以通过发送其中的dropdown_number来调用此函数,它将从页面上的下拉列表中选择值。
您可以像下面这样调用此函数:

select_dropdown_value(1) or
select_dropdown_value(2)

在这里,如果需要,您也可以参数化索引号。

答案 1 :(得分:0)

您可以直接索引由form-control类返回的webElements列表。那比xpath快。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://pmfby.gov.in")
driver.maximize_window()
em = driver.find_element_by_partial_link_text("Calculator")
em.click()
dropDowns = driver.find_elements_by_css_selector('.form-control')

for i in range(len(dropDowns)):
    dropDowns[i].click()