当前位置: 首页 > article >正文

Python + Selenium —— 下拉菜单处理!

传统的下拉菜单 Select 元素,由一个 Select + 一系列的 option 元素构成。

<select id="source" name="source">
 <option value="">--请选择--</option>
 <option value="1001">网络营销</option>
 <option value="1002">公开媒体</option>
 <option value="1003">合作伙伴</option>
	…
</select>

对于下拉菜单,我们操作时是先点击下拉选项,再在展开的选项中点击一项来完成选择。

如果用 Selenium 模拟,就需要先点击 Select 元素,再点击 Option,就稍微麻烦了一些。我们可以通过两种方法来处理。

1. 直接通过 Xpath 点击选项

通过 Xpath 点击直接选项,可以不用点击下拉,一句代码完成操作。

以上面的局部 HTML 代码为例:

driver.find_element_by_xpath('//*[@id="source"]/option[@value="1002"]').click()

2. 使用 Select 类

使用 Xpath 虽然可行,但是稍微缺乏一些灵活性。

在 WebDriver 中专门提供了一个 Select 类来处理下拉菜单。

# 导入 Select 类
from selenium.webdriver.support.select import Select
# 找到下拉菜单元素
e = driver.find_element_by_id('source')
select = Select(e)
# 按文本选择
select.select_by_visible_text('合作伙伴')

Select 类中还提供了通过 option 索引选取、通过 value 值选取:

select.select_by_index(1)
select.select_by_value('1003')

由于我们经常使用 index 和 visible text (可见文本) 的方式选择选项。所以我们简单封装一下:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select

def select(driver, locator, option=0):
	e = Select(driver.find_element(*locator))
	# 如果选项为整数,则通过 index 选择
	if isinstance(option, int):
		e.select_by_index(option)
	# 如果选项为字符串,则通过 visible_text 选择
	elif isinstance(option, str):
		e.select_by_visible_text(option)
	else:
		raise ValueError('只能通过index或可见文本进行下拉选项选择!')

# 使用
select(driver, (By.ID, 'source'), '合作伙伴')

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


http://www.kler.cn/a/551478.html

相关文章:

  • 在Windows和Linux平台上使用c++获取文件当前路径
  • 2025年实时操作系统的全面对比与分析
  • 企业选择第三方软件测评服务公司有什么好处?
  • 【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑮】
  • 【js逆向_入门】图灵爬虫练习平台 第四题
  • mybatis存储过程返回list
  • Helm快速开始
  • 【SQL】SQL多表查询
  • Windows系统安装GPU驱动
  • 数据分析的AI+流程(个人经验)
  • 一笔画-获取图像轮廓坐标点
  • JavaScript设计模式 -- 迭代器模式
  • vmware下ubuntu无法上网,电脑通过wifi连网
  • 罗德与施瓦茨ZNB4,4.5GHz网络分析仪的佼佼者
  • openGauss 3.0 数据库在线实训课程18:学习视图管理
  • 基于Qlearning强化学习的1DoF机械臂运动控制系统matlab仿真
  • 【GPIO详解及实践示例】
  • Leetcode 3459. Length of Longest V-Shaped Diagonal Segment
  • 大数据学习(48) - Flink状态种类
  • 李代数和李群的转化方法