《手把手教你》系列技巧篇(三十五)-java+ selenium自動化測試-單選和多選按鈕操作-下篇(詳解教程)

巨集哥發表於2021-10-29

1.簡介

今天這一篇巨集哥主要是講解一下,如何使用list容器來遍歷多選按鈕。大致兩部分內容:一部分是巨集哥在本地弄的一個小demo,另一部分,巨集哥是利用JQueryUI網站裡的多選按鈕進行實戰。

2.demo準備

2.1demo頁面的HTML程式碼

1.這裡巨集哥為了省事節約時間就直接用上一篇中那個radio.html。如下:

<!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參考程式碼

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參考程式碼

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()的區別。好了時間不早了,今天就分享到這裡!!!

相關文章