Python+Selenium笔记(八):操作下拉菜单

(一) 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(这段就不注释了)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Flutter入门

Weex是如何在Android客户端上跑起来的

Weex可以通过自己设计的DSL,书写.we文件或者.vue文件来开发界面,整个页面书写分成了3段,template、style、script,借鉴了成熟的MV...

56650
来自专栏大内老A

ASP.NET MVC的Razor引擎:RazorView

Razor引擎具有两个核心的类型,一个是表示View本身的类型RazorView,另一个则是获取和创建它的RazorViewEngine,我们将用两篇文章对它们...

25170
来自专栏魂祭心

原 结合源码分析 setTimeout /

40260
来自专栏恰童鞋骚年

ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程

开篇:上一篇我们了解了在WebForm模式下一个Page页面的生命周期,它经历了初始化Init、加载Load以及呈现Render三个重要阶段,其中构造了页面控件...

15030
来自专栏大内老A

为ASP.NET MVC创建一个基于Unity的ControllerFactory

谈到IoC和ASP.NET的集成,很多人会先后想到Ninject,不过我们个人还是倾向于Unity。这篇文章简单地介绍如果创建基于Unity的Controlle...

20170
来自专栏菩提树下的杨过

Silverlight:获取ContentTemplate中的命名控件

项目开发中遇到一个要求,需要将ComboBox右侧中的小三角箭头给去掉,通过Blend工具“编辑ComboBox的模板副本”得知,这是一个名为"BtnArrow...

23080
来自专栏君赏技术博客

HQ移动20170317期周报

删除缓存:rm ~/Library/Caches/CocoaPods/search_index.json

12230
来自专栏青蛙要fly的专栏

项目需求讨论-Vlayout来快速构建及扩展复杂界面

大家好,今天又带来了项目中具体遇到的需求。做一个首界面,该首界面有很多功能块,同时这些功能块是动态的,因为登录的人的权限的不同,会显示不同的功能块,因为功能模块...

28220
来自专栏刘望舒

LeakCanary看这一篇文章就够了

LeakCanary是Square公司基于MAT开源的一个内存泄漏检测工具,在发生内存泄漏的时候LeakCanary会自动显示泄漏信息。

3.4K50
来自专栏JackieZheng

Spring读书笔记——bean加载

我们的日常开发几乎离不开Spring,他为我们的开发带来了很大的便捷,那么Spring框架是如何做到方便他人的呢。今天就来说说bean如何被加载加载。 我们在x...

22790

扫码关注云+社区

领取腾讯云代金券