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中操作文件之read()方法的使用教程
May 24 Python
Python编程入门之Hello World的三种实现方式
Nov 13 Python
python 随机森林算法及其优化详解
Jul 11 Python
调试Django时打印SQL语句的日志代码实例
Sep 12 Python
python中def是做什么的
Jun 10 Python
python中format函数如何使用
Jun 22 Python
经验丰富程序员才知道的8种高级Python技巧
Jul 27 Python
Pytest如何使用skip跳过执行测试
Aug 13 Python
python绘制分布折线图的示例
Sep 24 Python
python实现暗通道去雾算法的示例
Sep 27 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
详解Python中如何将数据存储为json格式的文件
Nov 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
再次研究下cache_lite
2007/02/14 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
ExpressJS入门实例
2015/01/14 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
python随机模块random使用方法详解
2020/02/14 Python
Python处理PDF与CDF实例
2020/02/26 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
护理学中专毕业生求职信
2013/11/11 职场文书
环保专业大学生职业规划设计
2014/01/10 职场文书
学习交流会主持词
2014/04/01 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
学校课外活动总结
2014/05/08 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL