前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)

《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)

作者头像
北京-宏哥
发布2021-11-02 16:54:46
1.6K0
发布2021-11-02 16:54:46
举报

1.简介

今天这一篇宏哥主要是讲解一下,如何使用list容器来遍历多选按钮。大致两部分内容:一部分是宏哥在本地弄的一个小demo,另一部分,宏哥是利用JQueryUI网站里的多选按钮进行实战。

2.demo准备

2.1demo页面的HTML代码

1.这里宏哥为了省事节约时间就直接用上一篇中那个radio.html。如下:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试单选</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: 20px 300px 50px 300px;
            text-decoration:none;
            color: white;
        }
        #myAnchor
        {
          text-decoration:none;
          color: white;
        }
        #hg
        {
            margin: 20px 300px 50px 300px;
        }
    </style>
</head>
<body>
    <button class="button1"><a id="myAnchor" href="https://www.cnblogs.com/du-hong/">北京-宏哥</a></button></br>
    <div id="hg">
        <div>
        <h3>复选框 checkbox</h3> 请选择喜欢的打野英雄:<br>
        <label><input name="checkbox1" type="checkbox" value="李白"/>李白 </label><br>
        <label><input name="checkbox2" type="checkbox" value="韩信"/>韩信 </label><br>
        <label><input name="checkbox3" type="checkbox" value="公孙离" checked="checked"/>公孙离 </label><br>
        <label><input name="checkbox4" type="checkbox" value="露娜"/>露娜 </label><br>
        </div>
        <div>
            <h3>单选框 radio</h3> 选择喜欢的打野英雄:<br>
            <label><input name="radio" type="radio" value="0" checked="checked"/>李白 </label><br>
            <label><input name="radio" type="radio" value="1"/>韩信 </label><br>
            <label><input name="radio" type="radio" value="2"/>露娜 </label><br>
            <label><input name="radio" type="radio" value="3"/>孙尚香 </label><br>
        </div>
    </div>
</body>
</html>

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

2.2多选遍历

和单选一样的遍历思路:

1.首先找到所有单选按钮的共同点。

2.使用共同点来定位单选按钮,将其放在list容器中。

3.利用for循环将其从容其中一一遍历出来。

2.3代码设计

根据上边的遍历思路进行代码设计如下图所示:

2.4参考代码
代码语言:javascript
复制
package lessons;

import java.util.concurrent.TimeUnit;



import java.util.List;

import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

/**
 * @author 北京-宏哥
 * 
 * 《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)
 *
 * 2021年10月21日
 */
public class TestRadio {
    
    @Test 
    public void testRadio() throws InterruptedException { 
        System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe");
        
        WebDriver driver =null;
        driver =new ChromeDriver();
        driver.get("file:///C:/Users/DELL/Desktop/test/radio.html"); 
        driver.manage().window().maximize(); 
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
        //查找value属性值为“露娜”的复选框元素
        WebElement lounaCheckBox = driver.findElement(By.xpath("//input[@value='露娜']"));
        //如果此复选框没有被选中,则调用click方法单击选中此复选框
        if(!lounaCheckBox.isSelected()){
        
            lounaCheckBox.click();
            Thread.sleep(1000);
        }
        //断言此复选框是否被选中成功
        Assert.assertTrue(lounaCheckBox.isSelected());
        //如果此复选框处于选中,则再次调用click方法单击取消此复选框选中状态
        if(lounaCheckBox.isSelected()){
        
            lounaCheckBox.click();
            Thread.sleep(1000);
        }
        //断言此复选框处于非选中状态
        Assert.assertFalse(lounaCheckBox.isSelected());
        //查找所有name值为“checkbox”的复选框,并存放在list容器中
        List<WebElement> elements = driver.findElements(By.cssSelector("[type='checkbox']")); 
        for (WebElement webElement :elements) { 
            //点击选中
            webElement.click(); 
        } 
    }

}
2.5运行代码

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

2.运行代码后电脑端的浏览器的动作,如下小视频所示:

3.JQueryUI网站

3.1被测网址

1.被测网址的地址:

https://jqueryui.com/resources/demos/checkboxradio/default.html

2.网页如下图:

3.2代码设计

根据demo中的遍历思路进行代码设计如下图所示:

3.3参考代码
代码语言:javascript
复制
package lessons;

import java.util.List;
import java.util.concurrent.TimeUnit;

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

/**
 * @author 北京-宏哥
 * 
 * 《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)
 *
 * 2021年10月21日
 */
public class operatRadio {
    
    @Test 
    public void testRadio() { 
        System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe");
        
        WebDriver driver =null;
        driver =new ChromeDriver();
        driver.get("https://jqueryui.com/resources/demos/checkboxradio/default.html"); 
        try{
            driver.manage().window().maximize(); 
            Thread.sleep(2000);
            driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
            List<WebElement> dx = driver.findElements(By.xpath("//*/div/fieldset[2]/label/span[1]"));  //将所有多选按钮对象,存储到一个list容器中
            //使用for循环遍历list容器中的每一个多选按钮
            for ( WebElement d : dx ){   
                //按遍历顺序依次点击按钮
                d.click();
                Thread.sleep(1000);
            }
       }catch (Exception e) {
           
           e.printStackTrace();
           
       }finally {
           
          // driver.quit();
       
       }
   }
}

3.4运行代码

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

2.运行代码后电脑端的浏览器的动作,如下小视频所示:

4.小结

  这一篇前后宏哥介绍过,只不过单独在这里再说一次,一定要注意find_elements()和find_element()的区别。好了时间不早了,今天就分享到这里!!!

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.简介
  • 2.demo准备
    • 2.1demo页面的HTML代码
      • 2.2多选遍历
        • 2.3代码设计
          • 2.4参考代码
            • 2.5运行代码
            • 3.JQueryUI网站
              • 3.1被测网址
                • 3.2代码设计
                  • 3.3参考代码
                  • 4.小结
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档