有多种方法可以处理Selenium页面中的静态下拉列表。静态下拉列表是网页的组成部分。这种类型的UI元素主要是为在页面上选择生日或年龄而开发的。
下拉列表并不是一个单独的元素。它是一组元素。例如,对于出生日期的选择,我们可以为日,月和年选择多个选项。因此,方法是首先获取主要元素,然后移至其子元素进行选择。
Selenium API提供了Select类,该类可与页面上的静态下拉列表一起使用。我们需要导入selenium.webdriver.support.select.Select来处理在html代码中具有select标签的静态下拉列表。
Select(driver.find_element_by_tag_name("select"))
下面列出了Select类下的方法-
select_by_visible_text(args) -通过显示为选项的文本进行选择。
此方法是最简单的方法,它基于可见的文本选择选项。如果没有选项与参数中给定的文本匹配,则抛出NoSuchElementException。
语法-
d = Select(driver.find_element_by_id("selection")) d.select_by_visible_text('Nhooo')
select_by_index(args) -在选项索引的帮助下进行选择。
此方法根据特定选项的索引选择选项。元素的索引大多以0开头。如果没有索引与参数中给定的索引匹配,则抛出NoSuchElementException。
语法-
d = Select(driver.find_element_by_id("selection")) d.select_by_index(1)
select_by_value(args) -借助option的值进行选择。
此方法根据特定选项的值选择选项。如果没有与参数中给定值匹配的值,则抛出NoSuchElementException。
语法-
d = Select(driver.find_element_by_id("selection")) d.select_by_value('Selenium')
deselect_by_value(args) -借助option值取消选择。
此方法根据特定选项的值取消选择该选项。如果没有与参数中给定值匹配的值,则抛出NoSuchElementException。
语法-
d = Select(driver.find_element_by_id("selection")) d.deselect_by_value('Selenium')
deselect_by_index(args) -在选项索引的帮助下取消选择。
此方法根据特定选项的索引取消选择该选项。元素的索引大多以0开头。如果没有索引与参数中给定的索引匹配,则抛出NoSuchElementException。
语法-
d = Select(driver.find_element_by_id("selection")) d.deselect_by_index(1)
deselect_by_visible_text(args) -借助option显示的文本取消选择。
此方法是最简单的方法,它基于可见文本取消选择选项。如果没有选项与参数中给定的文本匹配,则抛出NoSuchElementException。
语法-
d = Select(driver.find_element_by_id("selection")) d.deselect_by_visible_text('Nhooo')
deselect_all() -取消所有选定选项的选择。
此方法适用于可以完成多个选项选择的情况。它将从下拉列表中删除所有选择的选项。如果无法从下拉列表中选择多个选项,则抛出NotImplementedError。
语法-
d = Select(driver.find_element_by_id("selection")) d.deselect_all()
all_selected_options() -所有选定选项的列表。
此方法适用于可以完成多个选项选择的情况。它返回在select标记下选择的选项列表。
语法-
d = Select(driver.find_element_by_id("selection")) o = d.all_selected_options()
first_selected_option() -返回第一个选择的选项。
此方法在下拉列表中返回当前选择的选项。它也适用于多个选择下拉菜单,它将返回下拉菜单中的第一个选定选项。
语法-
d = Select(driver.find_element_by_id("selection")) o = d.first_selected_option()
options() -所有选项的列表。它返回select标记下所有选项的列表。
语法-
d = Select(driver.find_element_by_id("selection")) o = d.options()