我需要选择第二,第三和最后一个下拉菜单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
请帮助我解决此问题。
答案 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()