16.Selenium【下拉框操作】模拟操作下拉框
一、前言
前端页面中,还有一种我们经常碰到的元素,他就是下拉框。这种元素我们其实有一种简单放法进行操作,先点击一下下拉框弹窗下拉列表,然后再点击选项。这种方法是使用两个点击动作达到选择下拉列表选项的目的。那有没有简单方法只需一步就能选择下拉项呢?这节课将解决这个疑问。
注:通过Select提供的方法和属性,我们可以对标准select下拉框进行任何操作,但是对于非select标签的伪下拉框,需要使用XPath定位。
二、学习目标
1.选择项选择
2.选择项取消选择
3.获取选择信息
三、知识点
地址示例:http://sahitest.com/demo/selectTest.htm
1.【选择项选择】
-
按索引值选择
#1.实例化select s = Select(driver.find_element_by_id("s1Id")) #2.按索引值选择 s.select_by_index(1) #0,1,2,3...
-
按value属性选择
#1.实例化select s = Select(driver.find_element_by_id("s1Id")) #2.按value属性选择 s.select_by_value('o2') #传value的值
-
按标签文本选择
#1.实例化select s = Select(driver.find_element_by_id("s1Id")) #2.按标签文本值 s.select_by_visible_text('o3') #传标签文本值
2.【选择项反选】
注意:有一种特殊的select标签,即设置了multiple="multiple"
属性的select
,这种select
框是可以多选的,取消操作只适用于添加了multiple的下拉框(可以多选),否则会报错
-
按索引值取消选择
#1.实例化select s = Select(driver.find_element_by_id("s4Id")) #2.按索引值选择 s.select_by_index(1) #按索引值 time.sleep(2) #3.按索引值取消选择 s.deselect_by_index(1) #传标签文本值
-
按value属性取消选择
#1.实例化select s = Select(driver.find_element_by_id("s4Id")) #2.按value属性选择 s.select_by_value('o2val') #按value属性 time.sleep(2) #3.按value属性取消选择 s.deselect_by_value('o2val') #按value属性
-
按标签文本取消选择
#1.实例化select s = Select(driver.find_element_by_id("s4Id")) #2.按标签文本选择 s.select_by_visible_text('o3') #按标签文本 time.sleep(2) #3.按标签文本取消选择 s.deselect_by_visible_text('o3') #按标签文本
-
全部取消选择
#1.实例化select s = Select(driver.find_element_by_id("s4Id")) #2.按标签文本选择 s.select_by_index(1) #按索引值 s.select_by_value('o2val') #按value属性 s.select_by_visible_text('o3') #按标签文本 time.sleep(2) #3.按标签文本取消选择 s.deselect_all() #全部取消
3.【获取选择信息】
我们还可以获取select标签对象的三个属性(注:不是方法):
#1.实例化select
s = Select(driver.find_element_by_id("s4Id"))
#2.按标签文本选择
s.select_by_index(1) #按索引值
s.select_by_value('o2val') #按value属性
s.select_by_visible_text('o3') #按标签文本
time.sleep(2)
#3.三个属性
s1 = s.options #提供所有的选项的列表,其中都是选项的WebElement元素
s2 = s.all_selected_options #提供所有被选中的选项的列表,其中也均为选项的WebElement元素
s3 = s.first_selected_option #提供第一个被选中的选项,也是下拉框的默认值
print(s1)
print(s2)
print(s3)