Selenium之常见元素处理系列四--下拉列表-多选下拉列表元素信息

xiaoxiao2021-02-28  90

今天讲一些下拉框另外几种方法

deselectByIndex() deselectByValue("") deselectByVisibleText("") getAllSelectedOptions() getFirstSelectedOption().getText()

注意:

上述几个方法只使用于一次性选择多种值的场景 我们上节的几个方法: selectByIndex() selectByValue("") selectByVisibleText("") 适用于一次性选择一个值的情况

eg:

代码:

package com.wushuai.test; 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; public class SelectTest { public WebDriver driver; //初始化chrome浏览器驱动 public void initDriver() { System.setProperty("webdriver.chrome.driver", "D:\\java\\chromedriver-32\\chromedriver.exe"); //初始化chrome浏览器 driver=new ChromeDriver(); driver.get("http://www.imooc.com/user/newlogin/from_url/"); //屏幕最大化 driver.manage().window().maximize(); } /* * 输入用户名与密码并且登录 * * */ public void inputBox() { //输入账号 driver.findElement(By.name("email")).sendKeys("123456@qq.com"); try { //睡眠两秒 Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //清除账号 driver.findElement(By.name("email")).clear(); String s=driver.findElement(By.name("email")).getAttribute("placeholder"); //打印信息 System.out.println(s); /* * * 输入用户名与密码并点击登录 * * 这里主要是为了在个人设置操作打下铺垫 * */ driver.findElement(By.name("email")).sendKeys("m13031155057@163.com"); driver.findElement(By.name("password")).sendKeys("123456"); driver.findElement(By.className("btn-red")).click();; try { //睡眠两秒 Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * 下拉框操作 * */ public void dowmsSelectBox() { //进入慕课网个人信息页面 driver.get("http://www.imooc.com/user/setprofile"); //找到并点击"编辑"按钮 driver.findElement(By.className("pull-right")).click(); //休眠一秒钟 try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //先找到form表单的id WebElement form=driver.findElement(By.id("profile")); //通过form表单再找到下拉框Select的id WebElement job=form.findElement(By.id("job")); //创建selenium自带的类进行下拉框定位 Select downList=new Select(job); /* * 以下三种方式任选一种为下拉框赋值 * */ //通过index为下拉框赋值 downList.selectByIndex(3); //downList.selectByValue("3"); //downList.selectByVisibleText("页面重构设计"); //如果添加以下四行代码中的任意一行代码,那么会报错:You may only deselect all options of a multi-select //报错原因:你可以选择多个选项-就是因为我们这里的下拉框只能一次性选中一个值,而不是多个值,而deselect只应用于多选中 //downList.deselectAll(); // downList.deselectByIndex(3); // downList.deselectByValue("3"); // downList.deselectByVisibleText("页面重构设计"); //List集合获取我们当前下拉框选中的值,要注意由于我们这里的下拉框每次只能选一个值,所以List集合中只有一个元素 List<WebElement> ls=downList.getAllSelectedOptions(); //遍历 for(WebElement s:ls) { System.out.println(s.getText()); } //得到我们第一个选中的文本值 System.out.println(downList.getFirstSelectedOption().getText()); //通过Value为下拉框赋值 //downList.selectByValue("4"); //通过Text文本为下拉框赋值 //downList.selectByVisibleText("JAVA开发工程师"); } public static void main(String[] args) { // TODO Auto-generated method stub //创建一个对象 SelectTest st=new SelectTest(); //调用chrome浏览器驱动初始化方法 st.initDriver(); //调用登录方法 st.inputBox(); //调用下拉框操作方法 st.dowmsSelectBox(); } }

总结:

deselectByIndex() deselectByValue("") deselectByVisibleText("") getAllSelectedOptions() getFirstSelectedOption().getText() //上述方法适用于一次性选择多个值的场景 selectByIndex() selectByValue("") selectByVisibleText("") //适用于一次性选择一个值的情况
转载请注明原文地址: https://www.6miu.com/read-96129.html

最新回复(0)