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生成pdf文件的方法
Aug 04 Python
Python在Console下显示文本进度条的方法
Feb 14 Python
用python写的一个wordpress的采集程序
Feb 27 Python
python 中的divmod数字处理函数浅析
Oct 17 Python
Python温度转换实例分析
Jan 17 Python
django表单实现下拉框的示例讲解
May 29 Python
Python XML转Json之XML2Dict的使用方法
Jan 15 Python
Python 串口读写的实现方法
Jun 12 Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
Python类成员继承重写的实现
Sep 16 Python
pycharm 代码自动补全的实现方法(图文)
Sep 18 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 auth_http类库进行身份效验
2009/03/19 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
2016/05/21 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
PHP实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
utf8的编码算法 转载
2006/12/27 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
2014/01/10 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
使用Python的PEAK来适配协议的教程
2015/04/14 Python
简单了解python模块概念
2018/01/11 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
Django在Model保存前记录日志实例
2020/05/14 Python
python实现在线翻译
2020/06/18 Python
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
JAVA和C++区别都有哪些
2015/03/30 面试题
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
人与自然观后感
2015/06/16 职场文书
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏