在做UI测试时经常会遇到下拉框,此时有两种方法处理:1.两次点击;2.使用select(下拉框处理模块)
引入路径:
from selenium.webdriver.support.select import Select
select相关操作
首先定位到下拉框,再通过select定位下拉选项
s = driver.find_element_by_id('***')
通过select选项的索引来定位选择对应选项(从0开始计数)
Select(s).select_by_index(5)
通过选项的value属性来定位
Select(s).select_by_value('2')
通过选项的文本内容来定位
Select(s).select_by_visible_text('牡丹江')
返回一个选中的optionElement对象
Select(s).first_selected_option
返回所有选中的optionElement对象
Select(s).all_selected_options
取消所有选中的option
Select(s).deselect_all()
通过option的index来取消对应的option
Select(s).deselect_by_index(1)
通过value属性,来取消对应的option
Select(s).deselect_by_value('3')
通过option的文本内容,取消对应的option
Select(s).deselect_by_visible_text('3')
一、首先要引入ActionChains模块
from selenium.webdriver.common.action_chains import ActionChains
二、先定位到顶级菜单,执行鼠标操作通过move_to_element将鼠标移到顶级菜单,再定位下拉菜单并点击
下面以百度首页为例子来说明:
打开百度--设置--搜索设置(鼠标悬浮菜单定位)--单选框定位--单选框定位--select下拉菜单定位--select下拉菜单定位--单选框定位--alert弹出框定位
from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains#引入函数模块
from selenium.webdriver.support.select import Select#引入函数模块
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com")#打开百度首页
sz = driver.find_element_by_link_text('设置')#先定位到顶级菜单
ActionChains(driver).move_to_element(sz).perform()#再将鼠标移动到顶级菜单:设置上面
driver.find_element_by_link_text('搜索设置').click()#最后定位下拉菜单元素并点击
time.sleep(3)
driver.find_element_by_id("s1_2").click()#单选框:搜索框提示 定位
driver.find_element_by_id('SL_1').click()#单选框:搜索语言范围 定位
Select(driver.find_element_by_id('nr')).select_by_value("20")#select下拉菜单定位,先定位到下拉框nr,再通过value定位下拉选项
Select(driver.find_element_by_id('issw1')).select_by_value('2')#select下拉菜单单定位
driver.find_element_by_id('sh_1').click()
driver.find_element_by_link_text('保存设置').click()
driver.switch_to.alert.accept()#alert弹出框"确认"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?