selenium中的下拉列表的操作

下拉列表,非select元素

在web界面上,有一些下拉列表里,并不是select选项元素,处理这种下拉框时,主要是元素定位。
比如百度首页的,设置按钮,鼠标悬浮时,出来下拉列表:
在这里插入图片描述

选择选项的实现代码:

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver

chr_driver = webdriver.Chrome()
chr_driver.maximize_window()
chr_driver.get("https://www.baidu.com/")
# //*[@id="s-usersetting-top"]

ele = chr_driver.find_element_by_xpath('//*[@id="s-usersetting-top"]')
# 实例化,悬浮、点击
ActionChains(chr_driver).move_to_element(ele).perform()

# 下拉列表,非select元素
# 获取定位
loc = (By.XPATH, '//a[text()="高级搜索"]')
WebDriverWait(chr_driver, 20).until(EC.visibility_of_element_located(loc))
# 点击列表选项“高级检索”
chr_driver.find_element(*loc).click()

效果:

在这里插入图片描述

下拉列表,select元素

对于web页面是,下拉列表为select元素的,selenium专门提供了一个类Select进行处理。
比如下面的新闻网站:
在这里插入图片描述
选择下拉框中的值,实现代码:

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver
from selenium.webdriver.support.select import Select
import time

chr_driver = webdriver.Chrome()
chr_driver.maximize_window()
chr_driver.get("https://news.sina.com.cn/")


"""
下拉列表,select元素,处理select元素
"""
# 等待元素可见后,查找元素
select_loc = (By.XPATH, '//select[@name="channel"]')
WebDriverWait(chr_driver, 20).until(EC.visibility_of_element_located(select_loc))
ele = chr_driver.find_element(*select_loc)
s = Select(ele)

"""
选择下拉列表中的选项时,有以下三种方式
"""
# 下标方式选择元素
s.select_by_index(1)
time.sleep(3)

# value属性选择元素
s.select_by_value("tech")
time.sleep(3)

# 文本内容选择元素
s.select_by_visible_text("娱乐")

进行切换时,并不会出现下拉列表,而是直接切换值,效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值