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命令行参数解析OptionParser类用法实例
Oct 09 Python
Python基于select实现的socket服务器
Apr 13 Python
Pycharm运行加载文本出现错误的解决方法
Jun 27 Python
python的pytest框架之命令行参数详解(下)
Jun 27 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
Dec 12 Python
tensorflow之并行读入数据详解
Feb 05 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 Python
用 Python 制作地球仪的方法
Apr 24 Python
Python json格式化打印实现过程解析
Jul 21 Python
python 代码运行时间获取方式详解
Sep 18 Python
Scrapy实现模拟登录的示例代码
Feb 21 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
phpmail类发送邮件函数代码
2012/02/20 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
php实现微信和支付宝支付的示例代码
2020/08/11 PHP
JS DOM 操作实现代码
2010/08/01 Javascript
js获取指定的cookie的具体实现
2014/02/20 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
Python常见文件操作的函数示例代码
2011/11/15 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
英国家电直销:Appliances Direct
2016/09/22 全球购物
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
草莓网官网:StrawberryNET
2019/08/21 全球购物
爷爷追悼会答谢词
2014/01/24 职场文书
促销活动方案模板
2014/02/24 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
爱牙日活动总结
2014/08/29 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
2015年领班工作总结
2015/04/29 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
2016大一新生军训感言
2015/12/08 职场文书
导游词之淮安明祖陵
2019/11/25 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript
Nginx报404错误的详细解决方法
2022/07/23 Servers