Python爬虫之Selenium下拉框处理的实现


Posted in Python onDecember 04, 2020

在我们浏览网页的时候经常会碰到下拉框,WebDriver提供了Select类来处理下拉框,详情请往下看:

本章中用到的关键方法如下:

  • select_by_value():设置下拉框的值
  • switch_to.alert.accept():定位并接受现有警告框(详情请参考Python爬虫 - Selenium(9)警告框(弹窗)处理)
  • click():鼠标点击事件(其他鼠标事件请参考Python爬虫 - Selenium(5)鼠标事件)
  • move_to_element():鼠标悬停(详情请参考Python爬虫 - Selenium(5)鼠标事件)
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.support.select import Select
import time
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')

# 鼠标悬停至“设置”链接
link = driver.find_element_by_link_text('设置')
ActionChains(driver).move_to_element(link).perform()
time.sleep(2) #睡两秒,看一下效果

# 打开搜索设置
driver.find_element_by_link_text("搜索设置").click()
time.sleep(2) #睡两秒,看一下效果

# 搜索结果显示条数
sel = driver.find_element_by_xpath("//select[@id='nr']")
Select(sel).select_by_value('50') # 显示50条
time.sleep(2) #睡两秒,看一下效果

# 保存设置
driver.find_element_by_class_name("prefpanelgo").click()
time.sleep(2) #睡两秒,看一下效果

# 定位并接受现有警告框
alert = driver.switch_to.alert.accept()
time.sleep(2) #睡两秒,看一下效果

driver.quit()

select类中的函数列表

函数 解析
options 返回select元素所有的options
all_selected_options 返回select元素中所有已选中的选项
first_selected_option 返回select元素中选中的第一个选项
select_by_index(index) 通过索引定位,index索引是从“0”开始
select_by_value(value) 通过value属性值定位
select_by_visible_text(text)t 通过文本值定位,visible_text是在option标签中间的值,即显示在下拉框的值;
deselect_all() 取消全部的已选择项
deselect_by_index(index) 取消已选中的索引项
deselect_by_value(value) 取消已选中的value值
deselect_by_visible_text(text) 取消已选中的文本值

举例

html如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>我是标题</title>
</head>
<body>
<!--select标签-->
<select name="city" size="5" multiple="multiple">
 <option value="1" tabindex="1">北京</option>
 <option value="2" tabindex="2" selected="selected">河南</option>
 <option value="3" tabindex="3">河北</option>
 <option value="4" tabindex="4">山东</option>
 <option value="5" tabindex="5">上海</option>
</select>

</body>
</html>

Python爬虫之Selenium下拉框处理的实现

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

driver = webdriver.Chrome(r"D:\browser\chromedriver\chromedriver.exe")
driver.get("http://localhost:63342/ui_test/select%E6%A0%87%E7%AD%BE.html")

driver.maximize_window()

ele = driver.find_element_by_name("city")
select = Select(ele)
select.select_by_value("3") # 选中"河北"
time.sleep(3)
select.select_by_index(0) # 选中"北京"
time.sleep(3)
select.deselect_by_value("3") # 取消选中"河北"
time.sleep(3)
select.deselect_by_index(0) # 取消选中"北京"
time.sleep(3)
driver.quit()

Selenium文集传送门:

标题 简介
Python爬虫 - Selenium(1)安装和简单使用 详细介绍Selenium的依赖环境在Windows和Centos7上的安装及简单使用
Python爬虫 - Selenium(2)元素定位和WebDriver常用方法 详细介绍定位元素的8种方式并配合点击和输入、提交、获取断言信息等方法的使用
Python爬虫 - Selenium(3)控制浏览器的常用方法 详细介绍自定义浏览器窗口大小或全屏、控制浏览器后退、前进、刷新浏览器等方法的使用
Python爬虫 - Selenium(4)配置启动项参数 详细介绍Selenium启动项参数的配置,其中包括无界面模式、浏览器窗口大小设置、浏览器User-Agent (请求头)等等
Python爬虫 - Selenium(5)鼠标事件 详细介绍鼠标右击、双击、拖动、鼠标悬停等方法的使用
Python爬虫 - Selenium(6)键盘事件 详细介绍键盘的操作,几乎包含所有常用按键以及组合键
Python爬虫 - Selenium(7)多窗口切换 详细介绍Selenium是如何实现在不同的窗口之间自由切换
Python爬虫 - Selenium(8)frame/iframe表单嵌套页面 详细介绍如何从当前定位的主体切换为frame/iframe表单的内嵌页面中
Python爬虫 - Selenium(9)警告框(弹窗)处理 详细介绍如何定位并处理多类警告弹窗
Python爬虫 - Selenium(10)下拉框处理 详细介绍如何灵活的定位并处理下拉框
Python爬虫 - Selenium(11)文件上传 详细介绍如何优雅的通过send_keys()指定文件进行上传
Python爬虫 - Selenium(12)获取登录Cookies,并添加Cookies自动登录 详细介绍如何获取Cookies和使用Cookies进行自动登录
Python爬虫 - Selenium(13)设置元素等待 详细介绍如何优雅的设置元素等待时间,防止程序运行过快而导致元素定位失败
Python爬虫 - Selenium(14)窗口截图 详细介绍如何使用窗口截图
Python爬虫 - Selenium(15)关闭浏览器 详细介绍两种关闭窗口的区别

到此这篇关于Python爬虫之Selenium下拉框处理的实现的文章就介绍到这了,更多相关Selenium 下拉框内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python连接sql server乱码的解决方法
Jan 28 Python
浅谈Python中函数的参数传递
Jun 21 Python
Python实现统计文本文件字数的方法
May 05 Python
Python中的 enum 模块源码详析
Jan 09 Python
Python Image模块基本图像处理操作小结
Apr 13 Python
解决python super()调用多重继承函数的问题
Jun 26 Python
python opencv 二值化 计算白色像素点的实例
Jul 03 Python
python实现递归查找某个路径下所有文件中的中文字符
Aug 31 Python
python函数调用,循环,列表复制实例
May 03 Python
JAVA SWT事件四种写法实例解析
Jun 05 Python
在Keras中利用np.random.shuffle()打乱数据集实例
Jun 15 Python
总结Python变量的相关知识
Jun 28 Python
Python爬虫之Selenium警告框(弹窗)处理
Dec 04 #Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
Dec 04 #Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 #Python
Python爬虫之Selenium实现键盘事件
Dec 04 #Python
python 爬虫请求模块requests详解
Dec 04 #Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 #Python
Selenium 配置启动项参数的方法
Dec 04 #Python
You might like
关于PHP中的Class的几点个人看法
2006/10/09 PHP
PHP面向对象分析设计的经验原则
2008/09/20 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
vue-router相关基础知识及工作原理
2018/03/16 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
详解原生JS回到顶部
2019/03/25 Javascript
koa-router路由参数和前端路由的结合详解
2019/05/19 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
2020/03/02 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
Python 闭包的使用方法
2017/09/07 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
python实现聚类算法原理
2018/02/12 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
python3调用windows dos命令的例子
2019/08/14 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
Python imageio读取视频并进行编解码详解
2019/12/10 Python
python 检测图片是否有马赛克
2020/12/01 Python
Sephora丝芙兰澳洲官方网站:国际知名化妆品购物
2016/10/27 全球购物
超市实习总结自我鉴定
2013/09/19 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
立春观后感
2015/06/18 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript