首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)

《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)

作者头像
北京-宏哥
发布于 2021-10-20 09:15:03
发布于 2021-10-20 09:15:03
1.9K06
代码可运行
举报
运行总次数:6
代码可运行

1.简介

在实际自动化测试过程中,我们也避免不了会遇到下拉选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助。

2.select 下拉框

2.1Select类

1.在Selenium中,针对html的标签select多选下拉列表有几种方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
selectByIndex(index);  //根据索引选择
selectByValue(value); //根据value属性选择
selectByVisibleText(text); //根据选项文字选择
注意的是:
*index是从0开始的
**Value是option标签的一个属性值,并不是显示在下拉框中的值
***VisibleText是在option标签中间的值,是显示在下拉框的值  

2.四种取消方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
deselectByIndex(0);
deselectByValue(value);
deselectByVisibleText(Text);
deselectAll();       //取消所有选中

3.下拉选的处理类:Select 如果页面元素是一个下拉框,我们可以将此web元素封装成Select对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Select select = new Select(WebElement element);
//Select select = new Select(driver.findElement(By.id("xxx")));
//获取所有选项的方法
select.getOptions();
//根据索引选中对应的元素
select.selectByIndex(index);
//根据value值选中对应的选项
select.selectByValue(value);
//根据文本值选中对应的选项
select.selectByVisibleText(text);
//判断是不是多选的选择框返回boolean值 
select.isMultiple();
//取消所有的选中
select.deselectAll();

3.select.html

1.准备测试练习select.html,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试Select</title>
    <style type="text/css">
        .button1 {
            background-color: #f44336; 
            border: none;
            color: white;
            padding: 15px 32px;
            text-align: center;
            text-decoration: none;
            display: inline-block;
            font-size: 28px;
            margin-bottom: 100px;
            text-decoration:none;
            color: white;
        }
        #myAnchor
        {
          text-decoration:none;
          color: white;
        }
    </style>
</head>
<body>
 <button class="button1"><a id="myAnchor" href="https://www.cnblogs.com/du-hong/">北京-宏哥</a></button></br>
    快递邮寄地址:
    <select id="select_id" name="select_name" class ="select_cls">
        <option value="0">请选择</option>
        <option value="1">山西</option>
        <option value="2">陕西</option>
        <option value="3">山东</option>
        <option value="4">四川</option>
        <option value="5">河北</option>
    </select>省_XXX_市_ XXX_街道
</body>
</html>

2.页面效果,如下图所示:

4.代码实战练习

4.1代码设计
4.2参考代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package lessons;


import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;
import org.junit.Test;

/**
 * @author 北京-宏哥
 * 
 * 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)
 *
 * 2021年10月16日
 */
public class SelectTest {
    
    @Test
    public void test() throws InterruptedException {

        System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe");
        
        WebDriver driver =null;
        driver =new ChromeDriver();
        driver.get("file:///C:/Users/DELL/Desktop/test/select.html");
        //Select select = new Select(WebElement element);
        Select select = new Select(driver.findElement(By.id("select_id")));
        //获取所有选项的方法
        List<WebElement> lst = select.getOptions();
        for (WebElement webElement : lst) {
            System.out.println("获取所有选项的方法依次输出文本值:"+webElement.getText());
        }
        //根据索引选中对应的元素
        select.selectByIndex(1);
        Thread.sleep(5000);
        //根据value值选中对应的选项
        select.selectByValue("4");
        Thread.sleep(5000);
        //根据文本值选中对应的选项
        select.selectByVisibleText("山东");
        Thread.sleep(5000);
        //判断是不是多选的选择框返回boolean值 
        System.out.println(select.isMultiple());
        //取消所有的选中
        select.deselectAll();
        Thread.sleep(5000);     
    }
}
4.3运行代码

1.运行代码,右键Run AS->Junit Test,控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作,从视频中可以看到选择的值不断地在修改变化(山西->四川->山东),如下小视频所示:

5.新的select

宏哥发现随着技术的更新换代,现在好多下拉选择都很少用以前那种的方式,而是采用一种类似pop弹出的效果,直接弹出一个一个页面选择,如下图所示:

12306网站:

快递:

5.1项目实战

宏哥这里就以12306网站的“出发地”选择框给小伙伴们或者童鞋们来打个样。

具体步骤: 1.首先访问12306网站;

2.定位到出发站,点击;

3.弹出选项,定位要选择的选项,点击即可。

5.2代码设计
5.3参考代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package lessons;


import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;


/**
 * @author 北京-宏哥
 * 
 * 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)
 *
 * 2021年10月16日
 */
public class Select {
    
    public static void main(String[] args) throws InterruptedException {
            
        System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe");
            
        WebDriver driver = new ChromeDriver();  
         
        driver.manage().window().maximize();  
              
        driver.get("https://www.12306.cn/");
        
        Thread.sleep(5000);
        
        //By id 定位
        WebElement fromStationText = driver.findElement(By.id( "fromStationText" ));
        fromStationText.click();
        Thread.sleep(2000);
        
        WebElement fromStation = driver.findElement(By.xpath("//div/ul/li[text()='北京']"));
        fromStation.click();
        
    }
}
5.4运行代码

1.运行代码,右键Run AS->java Application,控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作,从视频中可以看到宏哥成功的将“出发站”选择为“北京”,如下小视频所示:

6.小结

其实无论哪种你只要定位到就可以操作实现自动化,只不过是以前的selenium封装好select类,直接调用比较方便而已,好了时间不早了,今天就分享到这里!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
TNBC数据分析-GSE76275-GPL570
五月份的学徒专注于GEO数据库里面的表达量芯片数据处理,主要的难点是表达量矩阵获取和探针的基因名字转换,合理的分组后就是标准的差异分析,富集分析。主要是参考我八年前的笔记:
生信技能树
2021/08/25
2.5K0
TNBC数据分析-GSE76275-GPL570
illumina芯片负数矩阵竟然也可以分析,只是结果诡异-学徒作业
不正常的illumina芯片数据如果使用lumi包的lumiR.batch函数读取会失败 (qq.com)
生信菜鸟团
2023/09/09
4140
illumina芯片负数矩阵竟然也可以分析,只是结果诡异-学徒作业
转录组GSE105789_小鼠数据下游分析注意事项
简单记录下GSE105789小鼠数据的下游分析的主要事项,与human的数据分析的主要区别是在进行id转换、kegg、go、gsea时,需要注意数据库和物种信息,应该选择小鼠。
sheldor没耳朵
2024/08/21
2620
转录组GSE105789_小鼠数据下游分析注意事项
GEO表达芯片数据分析
---title: "GEO表达芯片数据分析"output: html_documentdate: "2023-03-20"---关于该流程代码的说明:(1)本流程仅适用于GEO芯片表达数据,以"GSE56649"为例(2)先在GEO数据库中确定是否为"Expression profiling by array",不是的话不能使用本流程!(3)注意需要自行修改或判断的代码一般放在了两个空行之间(4)代码的注释有一丢丢多,目的是为了更好地帮助大家理解1.下载数据,提取表达矩阵、临床信息和GPL编号rm(lis
小叮当aka
2023/03/23
3.3K1
GEO数据库中芯片数据分析思路
AnnoProbe是曾建明老师2020年开发的一款用于下载GEO数据集并注释的R包,收录在tinyarray里。 idmap##根据所给的GPL号,返回探针的注释 geoChina##根据所给的GSE号,下载对应的表达矩阵 annoGene##根据gencode中的GTF文件注释基因ID
小张小张
2023/05/25
2K0
生信技能树GEO数据挖掘直播配套笔记
二代测序(RNA_seq):如果是counts 可选择limma的voom算法或者edgeR或者DESeq2。 如果是FPKM或TPM可选择limma,注意:edgeR和DESeq2只能处理count注意:count做差异分析计算上下调,FPKM或TPM进行下游可视化
生信技能树
2022/06/08
2.1K0
生信技能树GEO数据挖掘直播配套笔记
IF10+杂志文章只用统计学显著的差异基因做GSEA就合理吗?
Figure 2. CIH aggravates fibrosis, inflammation, and lipid accumulation in hepatocytes with PAOA stimulation
生信技能树
2025/02/05
1380
IF10+杂志文章只用统计学显著的差异基因做GSEA就合理吗?
指定通路绘制gsea图热图和火山图
但是我们直接是对gsea分析结果的最终es值在可视化,所以是行是通路,列是癌症的,数值是gsea的es打分的矩阵。对初学者来说, 跳过了大量细节,所以跟这个教程会比较吃力,有粉丝就提问了希望可以对这些通路在在具体的癌症里面细化展示,比如绘制gsea图,热图和火山图。
生信技能树
2022/07/26
2.5K0
指定通路绘制gsea图热图和火山图
GEO数据库挖掘
输入数据是数值型矩阵/数据框,颜色的变化表示数值的大小。有相关性热图和差异基因热图。
叮当猫DDM
2023/07/16
8451
在学术不端的数据取舍上面反复横跳
然后马上这些策略就被应用到了单细胞转录组数据挖掘层面,因为反正也不需要自己产出数据了,过去三五年间单细胞的火热带动了海量的各种实验设计的公开的表达量矩阵。比如这个文献:《Lipid-related protein NECTIN2 is an important marker in the progression of carotid atherosclerosis: An intersection of clinical and basic studies》就是看了看两个分组的具体的基因的差异,在普通bulk转录组和单细胞转录组两个数据集里面,如下所示:
生信技能树
2024/01/11
2970
在学术不端的数据取舍上面反复横跳
GSE75421芯片数据分析-1
想着去年学习的时候,也是学到芯片数据分析处理,然后说要去学习一下TCGA数据分析,然后就没有然后了
生信菜鸟团
2025/04/27
1330
GSE75421芯片数据分析-1
​文章复现—bulkRNA转录组结合机器学习等进行相关疾病研究01—多数据集去除批次效应后联合分析以及火山图标准绘制
《Identification of cuproptosisassociated subtypes and signature genes for diagnosis and risk prediction of Ulcerative colitis based on machine learning》基于机器学习的溃疡性结肠炎诊断和风险预测中铜死亡相关亚型和特征基因的鉴定(IF:5.7) Date:2023.04
sheldor没耳朵
2024/10/25
2874
​文章复现—bulkRNA转录组结合机器学习等进行相关疾病研究01—多数据集去除批次效应后联合分析以及火山图标准绘制
三阴性乳腺癌表达数据探索笔记之GSVA分析
GSVA对数据库中的每一个通路在每个样本中算了一个值,相当于GSEA的enrichment score, 如果得分越高,说明这个通路在该样本中被改变的越严重。
生信技能树
2020/10/26
4.7K0
三阴性乳腺癌表达数据探索笔记之GSVA分析
LncRNA芯片的一般分析流程
同样的策略,我们也可以应用到lncRNA的学习。所以昨天我们发布了:lncRNA的一些基础知识 ,那么接下来我们需要分享的就是lncRNA芯片的一般分析流程和lncRNA-seq数据的一般分析流程!
生信技能树
2019/12/31
3.7K0
LncRNA芯片的一般分析流程
生物信息数据分析教程视频——14-芯片数据的表达差异分析
视频地址:http://mpvideo.qpic.cn/0bc33iaakaaag4amkcjtmzrvbwwdaxnaabia.f10002.mp4? 参考文章: 生信入门第3课 | 了解基因芯片
DoubleHelix
2022/12/15
4330
RNA-seq 231023
参考https://www.zhihu.com/people/gu_chen/posts?page=2
素素
2023/10/31
5740
GEO数据挖掘
箱型图不显示原始数据点,而是采用样本数据,根据四分位数用盒和线来显示值的范围。此外,它们用星号显示落在箱须之外的离群值
可乐同学与生信死磕到底
2024/04/08
3060
GEO
生成Group向量的三种常规方法,三选一,选谁就把第几个逻辑值写成T,另外两个为F。如果三种办法都不适用,可以继续往后写else if
浅念
2023/04/04
1.6K0
跟小洁老师学习GEO的第二天
geoChina的用法 #数据下载 rm(list = ls()) library(GEOquery) #先去网页确定是否是表达芯片数据,不是的话不能用本流程。 gse_number = "GSE28345" library(AnnoProbe) eSet <- geoChina(gse_number, destdir = '.') class(eSet) length(eSet) eSet = eSet[[1]] 批量安装R包 options("repos"="https://mirrors.ustc.e
贝诺酯
2023/03/19
5620
剔除了两个样品前后的差异分析结果没什么区别?
其中一个小伙伴在学员交流群里面晒图就很有意思,看起来就很明显的两个样品分组可能是有误,或者说是两个离群点。文献是:《Changing human hair fibre colour and shape from the follicle》,对应的数据集是GSE193983,这个实验设计主要是为了探究不同毛发形状(直发与卷发)在毛囊中的基因表达差异。研究团队采用了微阵列技术来比较直发和极卷发之间的基因表达水平。总共是11位成年男性捐赠者 ,从每位志愿者那里收集了50个毛囊:6位极卷发捐赠者和5位直发捐赠者,均为非秃顶成年男性,年龄在19至40岁之间。
生信技能树
2024/11/21
1200
剔除了两个样品前后的差异分析结果没什么区别?
推荐阅读
相关推荐
TNBC数据分析-GSE76275-GPL570
更多 >
LV.0
阿里巴巴集团高级 Java 工程师
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档