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>