Selenium系列教程 - 下拉列表处理(select标签、非select标签)

1.下拉列表类型

在这里插入图片描述

下拉列表的类型可以分为 select 标签和非 select 标签,如:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2. Select 下拉列表处理

针对 select 标签的下拉列表,Selenium 提供了 Select 类进行操作:
from selenium.webdriver.support.ui import Select

2.1. Select 方法列表

方法含义
options()返回所有选项的列表
all_selected_options()返回所有选中的选项的列表
first_selected_option()返回第一个选中的选项(或普通选择中的当前选中选项)
select_by_value()通过value值定位
select_by_index()通过索引定位
select_by_visible_text()通过文本值定位
deselect_all()取消所有选中的选项,仅在select支持多选时有效,否则抛出NotImplementedError
deselect_by_value()取消对应value选项的选中状态
deselect_by_index()取消对应index选项的选中状态
deselect_by_visible_text()取消对应text选项的选中状态

2.2. Select 示例代码

import time
from selenium import webdriver
from selenium.webdriver.support.ui import Select

driver = webdriver.Chrome()

driver.get("http://sahitest.com/demo/selectTest.htm")
driver.implicitly_wait(10)

s = driver.find_element_by_id('s1')

options_list = Select(s).options	# 返回所有选项
for option in options_list:
    print(option.text)				# 打印每个选项的文本值

Select(s).select_by_index(2)        # 选中索引值为2的选项(index从0开始)
time.sleep(2)

Select(s).select_by_value('49')     # 选中value值为49的选项:Fax
time.sleep(2)

Select(s).select_by_visible_text('Mail')	# 选中文本为Mail的选项

time.sleep(2)
driver.quit()

3. 非 Select 下拉列表处理

除了 select 标签的下拉列表,还有很多非 select 标签的下拉列表。方法其实很简单,基本思路:先点击打开下拉列表,然后在定位选项。

import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://www.hao123.com/")
driver.implicitly_wait(10)

driver.find_element_by_css_selector(".tabs-toggle-hook").click()    # 点击搜索类型,打开下拉列表

# 等待下拉列表可见
WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located(("css selector", ".tabs-hook"))
)

driver.find_element_by_xpath("//div[@monkey='searchTab']/a[text()='图片']").click()    # 通过选项的文本值"图片"定位

time.sleep(2)
driver.quit()

在这里插入图片描述


在这里插入图片描述

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值