Java+Selenium3自動化測試入門12--select下拉框操作

select下拉框在我們平時的測試過程中可以說是非常常見的一種控件了,不管是手機端還是web端,那麼我在測試的過程中如果遇到這種空間應該如何處理呢,我所選擇的選項是不是我想要的那個呢,今天就來介紹下select下拉框下拉選擇框的操作及斷言。

好,首先我們寫一個非常正常的下拉框,那麼對於這種正式的下拉框selenium就有很多封裝好的api可以供我們使用

 <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Runoob</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" media="screen" href="../css/Runoob1.css" />
 
  
</head>
<body>
    <input type="text" id="inputbox" height="40px" width="10px" placeholder = "測試雙擊"> <br><br><br>
 <!--如果設置了multiple="multiple" 則爲多選,如不需要設置,則刪除即可
<select name="fruit" id="stylesheet" multiple="multiple"> -->
    <select name="fruit" id="stylesheet"> 
        <option value="">請選擇..</option>
        <option value="juzi">橘子</option>
        <option value="banana">香蕉</option>
        <option value="purple">葡萄</option>
        <option value="apple">蘋果</option>
    </select>
    
</body>
</html>

今天要做的操作就是

第一:選擇索引值爲0的選項,

第二,選擇value值爲“juzi”的選項,

第三,選擇標籤值爲“葡萄”選擇項

那麼開始寫代碼錢先介紹下我們的操作

        index索引是從 0 開始的,
        value是option標籤的一個屬性值,並不是顯示在下拉框中的值
        visible_text是在option標籤中間的值,是顯示在下拉框的值

package com.yumeihu.D1;

import java.util.ArrayList;
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.interactions.Actions;
import org.openqa.selenium.support.ui.Select;

public class DoublePick {
	
	public static WebDriver driver;
	public static void main(String[] args) throws Exception {    
		System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
		driver = new ChromeDriver();       
		driver.manage().window().maximize();
		String Url = "http://127.0.0.1:5500/views/Runoob.html";
		driver.get(Url); 
		Thread.sleep(2000);
/**
*獲取下拉框列表
**/
Select dropList = new Select(driver.findElement(By.name("fruit")));
                dropList.selectByIndex(0);
		Thread.sleep(1000);
		dropList.selectByValue("juzi");
		Thread.sleep(1000);
		dropList.selectByVisibleText("葡萄");
                //獲取所有options的值
		Select leaSelect = new Select(driver.findElement(By.name("fruit")));
		//getOptions()方法獲得的是一個WebElement的集合
		List<WebElement> webElements = leaSelect.getOptions();
		//新建一個List,用來存儲每個選項的文本值
		List<String> downs = new ArrayList<>();
		for(WebElement webElement : webElements){
			System.out.println("選項的值爲:"+webElement.getText()); //打印看一下
		//將每個選項的文本值添加到List集合
			downs.add(webElement.getText());
		}
		System.out.println(downs);
//反選即取消
		 * 針對的是設置了multiple=”multiple”屬性的select,這種select 是可以多選的
		 * 
		dropList.deselectByIndex(0);
		Thread.sleep(3000);
		dropList.deselectByValue("橘子");
		Thread.sleep(3000);
		dropList.deselectByVisibleText("葡萄");
		Thread.sleep(3000);
		dropList.deselectAll();
		
		
//isMultiple 表示此下拉列表是否允許多選,被測試網頁是一個單選下拉列表,所以此函數的返回結果是 false
		Assert.assertFalse(dropList.isMultiple());

當然我們的工作中可能很多開發都不會老老實實的使用<select>..<option>..<option>..</select>,而更多的可能都是使用<input>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章