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 random模块常用方法
Nov 03 Python
浅谈Python单向链表的实现
Dec 24 Python
Python多进程分块读取超大文件的方法
Apr 13 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
Jul 08 Python
python OpenCV学习笔记直方图反向投影的实现
Feb 07 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
python实现自动登录后台管理系统
Oct 18 Python
Django如何将URL映射到视图
Jul 29 Python
python修改字典键(key)的方法
Aug 05 Python
基于django micro搭建网站实现加水印功能
May 22 Python
python实现学生通讯录管理系统
Feb 25 Python
Python+DeOldify实现老照片上色功能
Jun 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
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
PHP return语句的另一个作用
2014/07/30 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
js捕捉键盘事件和按键键值的方法
2016/10/10 Javascript
浅谈JavaScript的闭包函数
2016/12/08 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
React组件refs的使用详解
2018/02/09 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
Python验证码识别的方法
2015/07/10 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
2018/02/08 Python
python爬虫正则表达式之处理换行符
2018/06/08 Python
Python tkinter常用操作代码实例
2020/01/03 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
python用Configobj模块读取配置文件
2020/09/26 Python
flask项目集成swagger的方法
2020/12/09 Python
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
中医临床专业自我鉴定范文
2014/01/15 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
小学数学课题方案
2014/06/15 职场文书
研究生求职自荐书
2014/06/23 职场文书
基层党员对照检查材料
2014/08/25 职场文书
道德模范事迹材料
2014/12/20 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
python 学习GCN图卷积神经网络
2022/05/11 Python
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL