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目录操作之python遍历文件夹后将结果存储为xml
Jan 27 Python
全面理解Python中self的用法
Jun 04 Python
Python处理JSON数据并生成条形图
Aug 05 Python
Tensorflow中使用tfrecord方式读取数据的方法
Jun 19 Python
Python线程下使用锁的技巧分享
Sep 13 Python
Python中函数的基本定义与调用及内置函数详解
May 13 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
打包PyQt5应用时的注意事项
Feb 14 Python
关于python 的legend图例,参数使用说明
Apr 17 Python
Django使用rest_framework写出API
May 21 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
Aug 26 Python
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
Aug 30 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中读取和写入WORD文档的代码
2008/04/09 PHP
用PHP与XML联手进行网站编程代码实例
2008/07/10 PHP
php adodb连接mssql解决乱码问题
2009/06/12 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
PHP文件上传类实例详解
2016/04/08 PHP
封装html的select标签的js操作实例
2013/07/02 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
js面向对象的写法
2016/02/19 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
TensorFlow实现模型评估
2018/09/07 Python
Python笔试面试题小结
2019/09/07 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
Python实现一个优先级队列的方法
2020/07/31 Python
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
西班牙在线药店:DosFarma
2020/03/28 全球购物
自荐信格式的六要素
2013/09/21 职场文书
集体备课反思
2014/02/12 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
MySQL基础(二)
2021/04/05 MySQL
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL