(一) Select类
Select类是selenium的一个特定的类,用来与下拉菜单和列表交互。
下拉菜单和列表是通过HTML的<select> 元素实现的。选择项是通过<select>中的<option>元素实现的。使用前使用下面的语句导入模块。
from selenium.webdriver.support.ui import Select
(二) Select类的功能及方法
功能/属性 | 简单说明 |
all_selected_options | 获取下拉菜单和列表中被选中的所有选项内容 |
first_selected_option | 获取下拉菜单和列表的第一个选项 |
options | 获取下拉菜单和列表的所有选项 |
方法 | 简单说明 |
deselect_all() | 清除多选下拉菜单和列表的所有选择项 |
deselect_by_index(index) | 根据索引清除下拉菜单和列表的选择项 Index:要清除目标的索引 |
deselect_by_value(value) | 清除和给定参数匹配的下拉菜单和列表的选择项 value:要清除目标选择项的value属性 |
deselect_by_visible_text(text) | 清除和给定参数匹配的下拉菜单和列表的选择项 text:要清除目标选择项的文本值 |
select_by_index(index) | 根据索引选择下拉菜单和列表的选择项 |
select_by_value(value) | 选择和给定参数匹配的下拉菜单和列表的选择项 |
select_by_visible_text(text) | 选择和给定参数匹配的下拉菜单和列表的选择项 |
(三) 示例(检查12306注册页面的证件类型是否与预期一致)
from selenium import webdriver
import unittest
from selenium.webdriver.support.ui import Select
class Register(unittest.TestCase):
...省略setup(这段就不注释了)
def test_register(self):
card_type =['二代身份证','港澳通行证','台湾通行证','护照']
card_type_options = []
#定位证件类型字段,作为Select类的对象实例
select_card_type = Select(self.driver.find_element_by_id('cardType'))
#检查默认选项是否为'二代身份证'
self.assertTrue(select_card_type.first_selected_option.text == '二代身份证')
#页面提供的证件类型选项数量是否为4个
self.assertEqual(4,len(select_card_type.options))
#将页面上每个选项的文本值添加到 card_type_options[]
for s in select_card_type.options:
card_type_options.append(s.text)
#检查页面上证件类型选项是否与预期一致
self.assertListEqual(card_type,card_type_options)
select_card_type.select_by_index(1) #选择索引为1的选项(港澳通行证)
#检查选择港澳通行证时,是否显示出生日期字段
self.assertTrue(self.driver.find_element_by_id('born_date').is_displayed())
select_card_type.select_by_value('B') #选择value = 'B'的选项(护照)
select_card_type.select_by_visible_text('二代身份证') #选择文本为 二代身份证的选项
...省略tearDown(这段就不注释了)