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实现微信接口(itchat)详细介绍
Oct 23 Python
15行Python代码实现网易云热门歌单实例教程
Mar 10 Python
python绘制评估优化算法性能的测试函数
Jun 25 Python
Python整数对象实现原理详解
Jul 01 Python
解决yum对python依赖版本问题
Jul 05 Python
Django model select的多种用法详解
Jul 16 Python
python中matplotlib条件背景颜色的实现
Sep 02 Python
python3实现elasticsearch批量更新数据
Dec 03 Python
如何更改 pandas dataframe 中两列的位置
Dec 27 Python
Python魔法方法 容器部方法详解
Jan 02 Python
Python模拟登录requests.Session应用详解
Nov 17 Python
单身狗福利?Python爬取某婚恋网征婚数据
Jun 03 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将任何格式视频转为flv的代码
2009/09/03 PHP
PHP调用Twitter的RSS的实现代码
2010/03/10 PHP
Destoon模板制作简明教程
2014/06/20 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
js的一些常用方法小结
2011/06/29 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
详细分析JS函数去抖和节流
2017/12/05 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
python3实现windows下同名进程监控
2018/06/21 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
详解python变量与数据类型
2020/08/25 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
高中生学习生活的自我评价
2013/11/27 职场文书
回门宴父母答谢词
2014/01/26 职场文书
信息技术培训感言
2014/03/06 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
美丽心灵观后感
2015/06/01 职场文书
开学典礼校长致辞
2015/07/29 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
Python基础知识学习之类的继承
2021/05/31 Python
Golang gRPC HTTP协议转换示例
2022/06/16 Golang