当前位置: 首页 > news >正文

选择下拉列表最大索引值 Select From List By Max Index

Select是网页表单中较为常见的元素,在Selenium2Library 中也有相应关键字可以操作,比如:

 

(1)通过指定索引选择

Name: Select From List By Index     Arguments: [ locator | *indexes ] 

Selects `*indexes` from list identified by `locator`

 

(2)通过指定文本选择

Name: Select From List By Label      Arguments: [ locator | *labels ]

Selects `*labels` from list identified by `locator`

 

(3)通过指定value选择

Name: Select From List By Value      Arguments: [ locator | *values ]

Selects `*values` from list identified by `locator`

 

(4)可以同时选择多项

Name: Select From List                    Arguments: [ locator | *items ]

Selects `*items` from list identified by `locator`

 

(5)选择所有项

Name: Select All From List                Arguments: [ locator ]

Selects all values from multi-select list identified by `id`.

 

为了快速操作方便,我们实现一个让Select自动赋最大索引值的方法。为什么是最大索引值而不是最小呢,比如第一个option为"" 或者"请选择",即使选中也是不符合要求的。所以继续看代码:

 

第1行:get_list_items获取select 的options集合

第2行:获取options集合中项的个数,注意此处用'$' 而不是'@'

第3行:通过计算得到所要的索引值

第4行:借用Select From List By Index 根据索引选择

 

至此,已经实现了想要的功能,但是还比较粗糙。如果options 的长度为0(这种情况是有可能的) ,并且在实际使用过程中发现如果options集合过大会有明显的等待过程,我们来看下get_list_items函数:

可以看到函数内部引用了_get_select_list_options_get_labels_for_options 

先看_get_select_list_options

这里只是一个简单地判断,并返回结果。看来症结应该是在_get_labels_for_options函数了

一个for 循环,虽然时间复杂度只有O(n)但也会因为options的长度变长而耗时

 

转载于:https://www.cnblogs.com/loveok-56/p/4453209.html

相关文章:

  • WCF技术的不同应用场景及其实现分析
  • OC开发_代码片段——代码编写简单的tableViewCell
  • Log4j 配置最全说明
  • Cisco CCIE LAB 考试的详细解说一
  • Javascript 笔记与总结(2-5)window 对象
  • JQuery插入新的元素结点方法汇总
  • 刷访问量程序
  • Dede 查询附加表
  • LAMP自动化安装脚本
  • verilog实现的VGA显示自反弹移动小方块
  • UNIX和Linux Shell正则表达式语法介绍
  • iOS.FBTweak
  • 数据结构-图
  • Linux 下完整安装ffmpeg(包括各种解码器)
  • poj2031
  • $translatePartialLoader加载失败及解决方式
  • 【个人向】《HTTP图解》阅后小结
  • Github访问慢解决办法
  • Koa2 之文件上传下载
  • k个最大的数及变种小结
  • Quartz初级教程
  • 半理解系列--Promise的进化史
  • 复杂数据处理
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 原生 js 实现移动端 Touch 滑动反弹
  • AI算硅基生命吗,为什么?
  • linux 淘宝开源监控工具tsar
  • 回归生活:清理微信公众号
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #if 1...#endif
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (层次遍历)104. 二叉树的最大深度
  • (二)hibernate配置管理
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (转)关于多人操作数据的处理策略
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • ../depcomp: line 571: exec: g++: not found
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET Core引入性能分析引导优化
  • .net 按比例显示图片的缩略图
  • .net 调用php,php 调用.net com组件 --
  • .net 验证控件和javaScript的冲突问题
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • /etc/fstab和/etc/mtab的区别
  • @JsonFormat与@DateTimeFormat注解的使用
  • @NoArgsConstructor和@AllArgsConstructor,@Builder