python+selenium select下拉选择框定位处理方法


Posted in Python onAugust 24, 2019

一、前言

总结一下python+selenium select下拉选择框定位处理的两种方式,以备后续使用时查询;

二、直接定位(XPath)

使用Firebug找到需要定位到的元素,直接右键复制XPath,使用find_element_by_xpath定位;

driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
driver.find_element_by_xpath().click()

三、间接定位(Select模块)

页面HTML源码如下所示:

<select id="nr" name="NR">
<option value="10" selected="">每页显示10条</option>
<option value="20">每页显示20条</option>
<option value="50">每页显示50条</option>
</select>

python+selenium 代码如下:

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
import time
 
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.implicitly_wait(20)
 
mouse = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text("搜索设置").click()
time.sleep(2)
# 实例化select
s = Select(driver.find_element_by_id("nr"))
# 定位选项
s.select_by_value("20") # 选择value="20"的项:通过value属性
time.sleep(2) #为了明显的看出变化
s.select_by_index(0) # 选择第一项选项:通过选项的顺序选择,第一个为 0
time.sleep(2) #为了明显的看出变化
s.select_by_visible_text("每页显示50条") # 选择text="每页显示50条"的值,即在下拉时我们可以看到的文本

四、总结

Select提供了三种选择方法:

select_by_index(index) ——通过选项的顺序,第一个为 0

select_by_value(value) ——通过value属性

select_by_visible_text(text) ——通过选项可见文本

Select提供了四种方法取消选择:

deselect_by_index(index) 
deselect_by_value(value) 
deselect_by_visible_text(text) 
deselect_all()

Select提供了三个属性方法提供信息:

options ——提供所有的选项的列表,其中都是选项的WebElement元素

all_selected_options ——提供所有被选中的选项的列表,其中也均为选项的WebElement元素

first_selected_option ——提供第一个被选中的选项,也是下拉框的默认值

通过Select提供的方法和属性,我们可以对标准select下拉框进行任何操作,但是对于非select标签的伪下拉框,需要使用XPath定位;

以上这篇python+selenium select下拉选择框定位处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简单的Python的curses库使用教程
Apr 11 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
mac系统下Redis安装和使用步骤详解
Jul 09 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
Feb 12 Python
python 穷举指定长度的密码例子
Apr 02 Python
解决pyqt5异常退出无提示信息的问题
Apr 08 Python
iPython pylab模式启动方式
Apr 24 Python
Python更换pip源方法过程解析
May 19 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
python基本算法之实现归并排序(Merge sort)
Sep 01 Python
selenium判断元素是否存在的两种方法小结
Dec 07 Python
Python编程super应用场景及示例解析
Oct 05 Python
Python封装成可带参数的EXE安装包实例
Aug 24 #Python
python识别文字(基于tesseract)代码实例
Aug 24 #Python
python图片二值化提高识别率代码实例
Aug 24 #Python
关于Python形参打包与解包小技巧分享
Aug 24 #Python
python-序列解包(对可迭代元素的快速取值方法)
Aug 24 #Python
对python中的装包与解包实例详解
Aug 24 #Python
Python3进制之间的转换代码实例
Aug 24 #Python
You might like
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
javascript打印输出json实例
2013/11/11 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
vue axios用法教程详解
2017/07/23 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
2019/12/12 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
详解Python中for循环是如何工作的
2017/06/30 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
python实现的config文件读写功能示例
2019/09/24 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
电子商务专业个人的自我评价
2013/12/19 职场文书
教师业务学习制度
2014/01/25 职场文书
养牛场项目建议书
2014/05/13 职场文书
借款担保书范文
2014/05/13 职场文书
老公保证书
2015/01/17 职场文书
委托书格式要求
2015/01/28 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
法院答辩状格式
2015/05/22 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
Nginx 常用配置
2022/05/15 Servers
Python Matplotlib绘制动画的代码详解
2022/05/30 Python
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers