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中的几种常见的数据类型
Feb 10 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
Nov 29 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
Python实现的绘制三维双螺旋线图形功能示例
Jun 23 Python
使用Python如何测试InnoDB与MyISAM的读写性能
Sep 18 Python
Django model select的多种用法详解
Jul 16 Python
Python Selenium参数配置方法解析
Jan 19 Python
python实现简单的购物程序代码实例
Mar 03 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
May 13 Python
python logging模块的使用
Sep 07 Python
Python实现打乒乓小游戏
Sep 25 Python
python基础之//、/与%的区别详解
Jun 10 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
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
2008/12/02 Javascript
最短的IE判断代码
2011/03/13 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
js使用DOM操作实现简单留言板的方法
2015/04/10 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
夜班门卫岗位职责
2013/12/09 职场文书
暑期社会实践学生的自我评价
2014/01/09 职场文书
个人贷款担保书
2014/04/01 职场文书
信访稳定工作汇报
2014/10/27 职场文书
教师考核评语大全
2014/12/31 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS
使用Ajax实现进度条的绘制
2022/04/07 Javascript