『心善渊』Selenium3.0基础 — 13、Selenium操作下拉菜单
页面中的<select></select>
标签,就代表该元素是一个下拉菜单。
1、使用Selenium中的Select类来处理下拉菜单(推荐)
可以使用Select
类中提供的方法来操作页面中的下拉菜单。
(1)操作步骤:
# 1.导入包Select类
from selenium.webdriver.support.select import Select
# 2.定位下拉菜单元素
# 3.把定位的下拉菜单元素存储到Select类中
select = Select(下拉菜单元素)
# 4.1 通过value属性来选择,option标签的一个属性值
select.select_by_value('属性值')
# 4.2 通过选项索引(index)值选择 索引从0开始
select_by_index(索引值)
# 4.3 通过选项名称选择
select_by_visible_text(选择名称)
(2)示例:
页面代码片段
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
</head>
<body>
<select name="selecta" id="selectA">
<option value="bj">A北京</option>
<option value="sh">A上海</option>
<option value="gz">A广州</option>
<option value="cq">A重庆</option>
</select>
</body>
</html>
脚本代码:
"""
1.学习目标:
掌握selenium中Select类使用
2.语法(操作步骤)
2.1导入Select类
2.2 定位下拉框的select标签
2.3 使用Select类提供的方法选择选项
2.3.1 通过选项的value值选择
select_by_value("value属性值")
2.3.2 通过选项索引值选择 索引从0开始
select_by_index(索引值)
2.3.3 通过选项名称选择
select_by_visible_text(选择名称)
3.需求
在页面中,使用Select类操作下拉框
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
import os
from selenium.webdriver.support.select import Select
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.打开页面
url = "file:///" + os.path.abspath("./3.html")
driver.get(url)
sleep(2)
# 4.使用Select类操作下拉框
# 4.1 定位下拉框标签
selectA = driver.find_element_by_id("selectA")
# 4.2 通过Select类选择选项
# 创建下拉框对象
# Select(定位下拉框的元素--select标签元素)
select = Select(selectA)
# 通过value值选择选项(选择上海)
select.select_by_value("sh")
sleep(2)
# 通过index值选择选项,索引从0开始(选择广州)
select.select_by_index(2)
sleep(2)
# 通过text值选择选项(选择北京)
select.select_by_visible_text("A北京")
sleep(2)
# 5.关闭浏览器
driver.quit()
2、下拉菜单对象的其他操作(了解)
调用如下方法,选择下拉框中的选项
操作 | 说明 |
---|---|
all_selected_options |
查看所有已选 |
first_selected_option |
查看第一个已选 |
is_multiple |
查看是否是多选 |
options |
查看选项元素列表 |
取消选择:
操作 | 说明 |
---|---|
deselect_by_value() |
通过option 标签的value 属性来选择 |
deselect_by_index() |
通过选项索引(index )值选择 索引从0开始 |
deselect_by_visible_text() |
通过选项名称选择 |
示例:
同上边示例,具体看获得的select
下拉菜单元素对象的操作。
# 1.导入selenium
from selenium import webdriver
from time import sleep
import os
from selenium.webdriver.support.select import Select
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.打开页面
url = "file:///" + os.path.abspath("./3.html")
driver.get(url)
sleep(2)
# 4.使用Select类操作下拉框
# 4.1 定位下拉框标签
selectA = driver.find_element_by_id("selectA")
# 4.2 通过Select类选择选项
# 创建下拉框对象
# Select(定位下拉框的元素--select标签元素)
select = Select(selectA)
"""
我们就以first_selected_option举个例子,
其他的操作同理,自己尝试。
"""
# 5.下拉框元素对象的操作
# 下拉框对象直接调用操作
# 5.1 打印下拉框第一个已选选项
print("打印第一个已选选项", select.first_selected_option)
# 5.2 查看第一个已选选项对象的方法
print(dir(select.first_selected_option))
# 5.3 通过上一步,我们查看选项对象有一个text方法
# 是获取选项的名称
print(select.first_selected_option.text) # A北京
# 6.关闭浏览器
driver.quit()
3、通过元素二次定位方式操作下拉菜单(重点)
(1)了解元素二次定位
先定位下拉菜单,再定位菜单中的具体元素,对下拉菜单进行二次定位。
类似于XPath
,css_selector
层级定位。
在实际测试过程中,一个页面可能有多个属性基本相同的元素,如果要定位到其中的一个,这时候可以使用层级定位或者元素的二次定位。
即:先定位到父元素,然后再通过父元素定位子孙元素。
(2)示例:
页面代码片段:
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
</head>
<body>
<select name="selecta" id="selectA">
<option value="bj">A北京</option>
<option value="sh">A上海</option>
<option value="gz">A广州</option>
<option value="cq">A重庆</option>
</select>
</body>
</html>
脚本代码:
"""
1.学习目标:
掌握二次定位的方法
2.语法(操作步骤)
2.1 定位父标签
2.2 通过父标签定位子标签
3.需求
在页面中,使用二次定位方法,操作下拉菜单
4.总结
二次定位:通过元素找另外元素。
和xpath,css_selector层级定位类似。
除了元素的基本操作外,元素也可以定位其他元素。
元素.click()/clear()/send_keys()/find_element_xxx
注意:二次定位不止使用在下拉菜单操作中。
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
import os
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.打开页面
url = "file:///" + os.path.abspath("./3.html")
driver.get(url)
sleep(2)
# 4.二次定位操作下拉菜单
# 4.1 先定位父级元素--select标签元素
select = driver.find_element_by_name("selecta")
# 4.2 通过select标签元素定位option子标签
option = select.find_element_by_css_selector("option[value='gz']")
# 4.3 点击选择的选项
option.click()
sleep(2)
# 5.关闭浏览器
driver.quit()
『心善渊』Selenium3.0基础 — 13、Selenium操作下拉菜单的更多相关文章
- 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍
目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...
- 『心善渊』Selenium3.0基础 — 11、Selenium对元素常用操作
目录 1.Selenium对元素常用操作 2.Selenium对元素的其他操作 1.Selenium对元素常用操作 操作 说明 click() 单击元素 send_keys() 模拟输入 clear( ...
- 『心善渊』Selenium3.0基础 — 12、Selenium操作鼠标和键盘事件
目录 (一)对鼠标的操作 1.鼠标事件介绍 2.ActionChains 类鼠标操作的常用方法 3.perform()方法 4.鼠标事件操作步骤 5.示例 (1)右键单击.左键双击 (2)鼠标拖拽动作 ...
- 『心善渊』Selenium3.0基础 — 1、Selenium自动化测试框架介绍
目录 1.Selenium介绍 2.Selenium的特点 3.Selenium版本说明 4.拓展:WebDriver与Selenium RC的区别 5.Webdriver工作原理 1.Seleniu ...
- 『心善渊』Selenium3.0基础 — 19、使用Selenium操作文件的上传和下载
目录 1.Selenium实现文件上传 (1)页面中的文件上传说明 (2)文件上传示例 (3)总结 2.Selenium实现文件下载 (1)Firefox浏览器文件下载 1)操作步骤: 2)文件下载示 ...
- 『心善渊』Selenium3.0基础 — 20、Selenium对Cookie的操作
目录 1.Cookie介绍 2.Session介绍 3.Cookie工作原理图解 4.Cookie内容参数说明 5.Selenium操作Cookie的API 6.Selenium操作Cookie的示例 ...
- 『心善渊』Selenium3.0基础 — 17、Selenium操作浏览器窗口的滚动条
目录 1.为什么操作滚动条 2.Selenium如何操作滚动条 3.Selenium操作滚动条方法 4.操作滚动条示例 5.下拉至聚焦元素的位置 (1)实现步骤: (2)实现示例: 1.为什么操作滚动 ...
- 『心善渊』Selenium3.0基础 — 2、Selenium测试框架环境搭建(Windows)
目录 1.浏览器安装 2.浏览器驱动下载 (1)ChromeDriver for Chrome (2)Geckodriver for Firefox (3)IEDriverServer for IE ...
- 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API
目录 1.导入Selenium库 2.创建浏览器对象 3.浏览器窗口大小设置 4.浏览器位置设置 5.请求访问网址 6.浏览器页面前进.后退和刷新 7.关闭浏览器 相比于高大上的各种Selenium进 ...
随机推荐
- CRM系统有哪几种常见类型?
随着市场的快速变化,客户开始变得越来越重要,因此CRM客户管理系统开始逐渐被企业所认可.从CRM系统进入中国市场到现在十余年的发展中,越来越多的CRM厂商开始出现.为了满足不同行业.不同类型的企业的需 ...
- java集合-哈希表HashTable
一.简介 HashTable也是一种key-value结构,key-value不允许null,并且这个类的几乎全部的方法都加上了synchronized锁,来保证并发安全,由于加了锁所以性能方面会比较 ...
- AOP随笔
AOP: Aspect-Oriented Programming 面向切面编程. 首先明确一个点:AOP是一个概念.那么对于一个概念,其实现方式多种多样,分为静态AOP.动态AOP,而对于动态AOP的 ...
- [设计模式] 读懂UML图
类之间关系(由强到弱) realize(继承):三角+实线(指向类),继承类(SUV是一种汽车) generalization(实现):三角+虚线(指向接口),实现接口(汽车是一种车) composi ...
- docker总结复习
一.概念 1.容器( container-based )虚拟化方案,充分利用了操作系统本身已有的机制和特性,以实现轻量级的虚拟化(每个虚拟机安装的不是完整的虚拟机),甚至有人把他称为新一代的虚拟化技术 ...
- JavaScript 实现简易版贪吃蛇(Day_13)
时光永远在变迁,你始终要丢下过去. 使用语言 JavaScript 概述 运用JavaScript 实现简易版<贪吃蛇>. Html 页面 1 <!DOCTYPE htm ...
- 1、大数据 Hadoop配置和单机Hadoop系统配置
#查看服务器ip ip add #设置主机名称 hostnamectl set-hostname master bash #查看 hostname #绑定ip vi /etc/hosts 添加 服务器 ...
- Python3.x 基础练习题100例(91-100)
练习91: 题目: 时间函数举例1. 程序: if __name__ == '__main__': import time print (time.ctime(time.time())) print ...
- 第一天:python学习-基础-计算机简史
第一天:计算机简史 1.元始的计算方式 : 1.1:数手指头,结绳记事.符号记事.算筹(祖冲之-圆周率).算盘:计算效率较低. 1.2:15世纪航海活动各天文需求 计算比较繁重,出现计算尺工具,奥特雷 ...
- GO学习-(28) Go语言操作influxDB
Go语言操作influxDB 本文介绍了influxDB时序数据库及Go语言操作influxDB. InfluxDB是一个开源分布式时序.事件和指标数据库.使用Go语言编写,无需外部依赖.其设计目标是 ...