【selenium】基于python语言,如何用select选择下拉框
在项目测试中遇到了下拉框选择的控件,来总结下如何使用select选择下拉框:
下图是Select类的初始化描述,意思是,给定元素是得是select类型,不是就抛异常。接下来给了例子:要操作这个select,先要定位到,然后再通过select_by_index 选择下拉框
- def __init__(self, webelement):
"""
Constructor. A check is made that the given element is, indeed, a SELECT tag. If it is not,
then an UnexpectedTagNameException is thrown.- :Args:
- webelement - element SELECT element to wrap- Example:
from selenium.webdriver.support.ui import Select \n
Select(driver.find_element_by_tag_name("select")).select_by_index(2)
"""
if webelement.tag_name.lower() != "select":
raise UnexpectedTagNameException(
"Select only works on <select> elements, not on <%s>" %
webelement.tag_name)
self._el = webelement
multi = self._el.get_attribute("multiple")
self.is_multiple = multi and multi != "false"
1、select_by_value:
- 看下代码:
- def select_by_value(self, value):
- """Select all options that have a value matching the argument. That is, when given "foo" this
- would select an option like:
- <option value="foo">Bar</option>
- :Args:
- - value - The value to match against
- throws NoSuchElementException If there is no option with specisied value in SELECT
- """
- css = "option[value =%s]" % self._escapeString(value)
- opts = self._el.find_elements(By.CSS_SELECTOR, css)
- matched = False
- for opt in opts:
- self._setSelected(opt)
- if not self.is_multiple:
- return
- matched = True
- if not matched:
- raise NoSuchElementException("Cannot locate option with value: %s" % value)
就是说使用这个方法,下拉框属性需要有value,如果选项中不具有指定值的项,就抛异常。例如:
- 2、select_by_index
看下代码:
- def select_by_index(self, index):
- """Select the option at the given index. This is done by examing the "index" attribute of an
- element, and not merely by counting.
- :Args:
- - index - The option at this index will be selected
- throws NoSuchElementException If there is no option with specisied index in SELECT
- """
- match = str(index)
- for opt in self.options:
- if opt.get_attribute("index") == match:
- self._setSelected(opt)
- return
- raise NoSuchElementException("Could not locate element with index %d" % index)
这个是通过元素的“index”属性来完成
- 3、select_by_visible_text
- 看下代码:
- def select_by_visible_text(self, text):
- """Select all options that display text matching the argument. That is, when given "Bar" this
- would select an option like:
- <option value="foo">Bar</option>
- :Args:
- - text - The visible text to match against
- throws NoSuchElementException If there is no option with specisied text in SELECT
- """
- xpath = ".//option[normalize-space(.) = %s]" % self._escapeString(text)
- opts = self._el.find_elements(By.XPATH, xpath)
- matched = False
- for opt in opts:
- self._setSelected(opt)
- if not self.is_multiple:
- return
- matched = True
- if len(opts) == 0 and " " in text:
- subStringWithoutSpace = self._get_longest_token(text)
- if subStringWithoutSpace == "":
- candidates = self.options
- else:
- xpath = ".//option[contains(.,%s)]" % self._escapeString(subStringWithoutSpace)
- candidates = self._el.find_elements(By.XPATH, xpath)
- for candidate in candidates:
- if text == candidate.text:
- self._setSelected(candidate)
- if not self.is_multiple:
- return
- matched = True
- if not matched:
- raise NoSuchElementException("Could not locate element with visible text: %s" % text)
- 通过选择文本来匹配,然后给出了例子。看下我的例子:
我的代码:
- stafftype_loc = (By.XPATH, "//select[@ng-model='Invite.type']")
- find_element(*self.stafftype_loc).send_keys(stftype)
【selenium】基于python语言,如何用select选择下拉框的更多相关文章
- selenium select 选择下拉框
实战百度首页设置,浏览偏好设置. 打开首页,在非登录的情况下,查看分析页面元素,我们可以看到,我们首先要点击的是设置, 接着点击,搜索设置, 然后select选择下拉框. select_by_inde ...
- Vue.js中使用select选择下拉框
在Vue.js中使用select选择下拉框有两种方法: 第一种: Add.html: <select v-model="sysNotice.noticeType" id=&q ...
- select change下拉框改变事件 设置选定项,禁用select
select change下拉框改变事件 设置选定项,禁用select 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio ...
- selenium 难定位元素,时间插件,下拉框定位,string
1.元素定位 ID定位元素: findElement(By.id(“”)); 通过元素的名称定位元素: findElement(By.name(“”)); 通过元素的html中的位置定位元素: fin ...
- jq select change下拉框选项变化判断选中值,添加(attr)或移除(removeAttr)一个或多个属性
select change下拉框选项变化判断选中值,添加(attr)或移除(removeAttr)一个或多个属性 $("#IsRecommend").change(function ...
- selenium 显示等待wait.until 常用封装 及下拉框的选择操作等
from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWait a ...
- selenium - Select类 - 下拉框
WebDriver提供了Select类来处理下拉框. 如百度搜索设置的下拉框,如下图: from selenium import webdriver from selenium.webdriver.s ...
- Selenium示例集锦--常见元素识别方法、下拉框、文本域及富文本框、鼠标操作、一组元素定位、弹窗、多窗口处理、JS、frame、文件上传和下载
元素定位及其他操作 0.常见的识别元素的方法是什么? driver.find_element_by_id() driver.find_element_by_name() driver.find_ele ...
- selenium如何随机选取省份和城市的下拉框的值
1.原始需求,选择省份后,相应的城市会自动加载 2.思路 a.获取下拉框的所有元素个数 b.随机点击0-元素个数之间的某个值 3.代码实现 Random random = new Random(); ...
随机推荐
- pytest_前置后置
今天总结下pytest,pytest简直就是python自动化中的高富帅,各种操作,哈哈 这次总结主要涉及到了以下几点: 1.unittest中的setUp.tearDown.setUpClass.t ...
- 简单的深度神经网络实现——使用PyTorch
使用的数据集是MNIST,预期可以达到98%左右的准确率. 该神经网络由一个输入层,一个全连接层结构的隐含层和一个输出层构建. 1.配置库和配置参数 import torch import torch ...
- AVX 指令详解 ,还有SSE指令
https://blog.csdn.net/fengbingchun/article/details/23598709 本人从来不复制的,自己看!.
- Linux---基本目录与文件命令
一.目录 1.显示工作目录命令pwd 2.改变工作目录命令cd 3.创建目录命令mkdir 二.文件 1.创建空文件命令touch 2.显示文件列表ls 3.复制文件或目录命令cp 4.删除文件或目录 ...
- echarts之--柱状图-%显示
测试地址 https://www.echartsjs.com/examples/zh/editor.html?c=bar-tick-align var option = { title: { text ...
- python hash 哈希值
自增知识点 1,哈希 什么是可哈希(hashable)? 简要的说可哈希的数据类型,即不可变的数据结构(字符串str.元组tuple.对象集objects). 哈希有啥作用? 它是一个将大体量数据转化 ...
- explain慢SQL分析解释
使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是 如何处理你的SQL语句的.分析你的查询语句或是表结构的性能瓶颈. 使用方式:Explain+SQL语句 执行计划包含的信 ...
- 【使用篇二】SpringBoot热部署(11)
热部署有三种方式: SpringLoader 插件 DevTools 工具 安装JRebel插件 注意:热部署的功能依赖于工具的自动编译,Eclipse-->Build Automaticall ...
- Git安装(一)
1. 下载Git 官网地址:https://git-scm.com/downloads 这里选择下载Git-2.23.0-64-bit.exe 2. 安装 安装完成
- openlayers绘制点,线,圆等
由于我的业务需求是可以在底图上进行一些操作,比如绘制电子围栏等功能,于是需要使用openlayers中的画笔功能,接下来开始一波操作 还是上一篇的html页面, 直接上代码 <!doctype ...