下面我们来看一下selenium webdriver是如何来处理select下拉框的,以Apple注册页面为例。

https://appleid.apple.com/cgi-bin/WebObjects/MyAppleId.woa/wa/createAppleId

  1. package com.annie.test;
  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import org.openqa.selenium.By;
  6. import org.openqa.selenium.WebDriver;
  7. import org.openqa.selenium.WebElement;
  8. import org.openqa.selenium.firefox.FirefoxDriver;
  9. import org.openqa.selenium.support.ui.Select;
  10. import static org.junit.Assert.*;
  11. import org.junit.Test;
  12. public class SelectTest {
  13. @Test
  14. public void testDropdown() {
  15. // System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe");
  16. WebDriver dr = new FirefoxDriver();
  17. dr
  18. .get("https://appleid.apple.com/cgi-bin/WebObjects/MyAppleId.woa/wa/createAppleId");
  19. // 通过下拉列表中选项的索引选中第二项,
  20. // 即What is the first name of your best friend in high school?
  21. Select sq1 = new Select(dr.findElement(By.id("security-question_1")));
  22. sq1.selectByIndex(2);
  23. // 通过下拉列表中的选项的value属性选中"January"value=1 这一项
  24. Select selectMon = new Select(dr.findElement(By.id("month")));
  25. selectMon.selectByValue("1");
  26. assertFalse(selectMon.isMultiple());// 验证下拉列表的不支持多选
  27. // assertEquals(4,selectMon().size()); //验证下拉数量
  28. Select selectDay = new Select(dr.findElement(By.id("day")));
  29. selectDay.selectByVisibleText("23");
  30. /** 检查下拉列表的选项 */
  31. // 预期的选项内容StateOptions
  32. List<String> StateOptions = Arrays.asList(new String[] {
  33. "Please select", "Alabama", "Alaska", "Arizona", "Arkansas",
  34. "Armed Forces Americas", "Armed Forces Europe",
  35. "Armed Forces Pacific", "California", "Colorado",
  36. "Connecticut", "Delaware", "Dist of Columbia", "Florida",
  37. "Georgia", "Guam", "Hawaii", "Idaho", "Illinois", "Indiana",
  38. "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland",
  39. "Massachusetts", "Michigan", "Minnesota", "Mississippi",
  40. "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire",
  41. "New Jersey", "New Mexico", "New York", "North Carolina",
  42. "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania",
  43. "Puerto Rico", "Rhode Island", "South Carolina",
  44. "South Dakota", "Tennessee", "Texas", "Utah", "Vermont",
  45. "Virgin Islands", "Virginia", "Washington", "West Virginia",
  46. "Wisconsin", "Wyoming" });
  47. /** 遍历一下下拉列表所有选项,用click进行选中选项 **/
  48. Select selectState = new Select(dr.findElement(By.id("state-province")));
  49. List<String> act_StateOptions = new ArrayList<String>();
  50. // 判断选择内容
  51. assertEquals("Please select", selectState.getFirstSelectedOption()
  52. .getText());
  53. for (WebElement e : selectState.getOptions()) {
  54. e.click();
  55. //  s = s + "\"" + e.getText() + "\"" + ",";
  56. // 将实际的下拉列表内容注入到act_StateOptions中,进行比较。
  57. act_StateOptions.add(e.getText());
  58. }
  59. assertArrayEquals(StateOptions.toArray(), act_StateOptions.toArray());
  60. }
  61. }
  1. package com.annie.test;
  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import org.openqa.selenium.By;
  6. import org.openqa.selenium.WebDriver;
  7. import org.openqa.selenium.WebElement;
  8. import org.openqa.selenium.firefox.FirefoxDriver;
  9. import org.openqa.selenium.support.ui.Select;
  10. import static org.junit.Assert.*;
  11. import org.junit.Test;
  12. public class SelectTest {
  13. @Test
  14. public void testDropdown() {
  15. // System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe");
  16. WebDriver dr = new FirefoxDriver();
  17. dr
  18. .get("https://appleid.apple.com/cgi-bin/WebObjects/MyAppleId.woa/wa/createAppleId");
  19. // 通过下拉列表中选项的索引选中第二项,
  20. // 即What is the first name of your best friend in high school?
  21. Select sq1 = new Select(dr.findElement(By.id("security-question_1")));
  22. sq1.selectByIndex(2);
  23. // 通过下拉列表中的选项的value属性选中"January"value=1 这一项
  24. Select selectMon = new Select(dr.findElement(By.id("month")));
  25. selectMon.selectByValue("1");
  26. assertFalse(selectMon.isMultiple());// 验证下拉列表的不支持多选
  27. // assertEquals(4,selectMon().size()); //验证下拉数量
  28. Select selectDay = new Select(dr.findElement(By.id("day")));
  29. selectDay.selectByVisibleText("23");
  30. /** 检查下拉列表的选项 */
  31. // 预期的选项内容StateOptions
  32. List<String> StateOptions = Arrays.asList(new String[] {
  33. "Please select", "Alabama", "Alaska", "Arizona", "Arkansas",
  34. "Armed Forces Americas", "Armed Forces Europe",
  35. "Armed Forces Pacific", "California", "Colorado",
  36. "Connecticut", "Delaware", "Dist of Columbia", "Florida",
  37. "Georgia", "Guam", "Hawaii", "Idaho", "Illinois", "Indiana",
  38. "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland",
  39. "Massachusetts", "Michigan", "Minnesota", "Mississippi",
  40. "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire",
  41. "New Jersey", "New Mexico", "New York", "North Carolina",
  42. "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania",
  43. "Puerto Rico", "Rhode Island", "South Carolina",
  44. "South Dakota", "Tennessee", "Texas", "Utah", "Vermont",
  45. "Virgin Islands", "Virginia", "Washington", "West Virginia",
  46. "Wisconsin", "Wyoming" });
  47. /** 遍历一下下拉列表所有选项,用click进行选中选项 **/
  48. Select selectState = new Select(dr.findElement(By.id("state-province")));
  49. List<String> act_StateOptions = new ArrayList<String>();
  50. // 判断选择内容
  51. assertEquals("Please select", selectState.getFirstSelectedOption()
  52. .getText());
  53. for (WebElement e : selectState.getOptions()) {
  54. e.click();
  55. //  s = s + "\"" + e.getText() + "\"" + ",";
  56. // 将实际的下拉列表内容注入到act_StateOptions中,进行比较。
  57. act_StateOptions.add(e.getText());
  58. }
  59. assertArrayEquals(StateOptions.toArray(), act_StateOptions.toArray());
  60. }
  61. }

/**从上面可以看出,对下拉框进行操作时首先要定位到这个下拉框,new 一个Selcet对象,然后对它进行操作。 在执行上面的例子时需要导入
* org.openqa
* .selenium.support.ui.Select类。首先创建一个Select癿对象,isMultiple()用来判断是丌是多选下拉框
* 。Select类提供了3种方法来选择下拉选项
* 。selectByVisibleText(),selectByValue(),selectByIndex()。
* 在使用返些方法癿时候要注意下拉列表是否是动态变化的 。
*/

如果只是单选的下拉列表,通过 如果只是单选的下拉列表,通过 getFirstSelectedOption()就可以得到所选择的项, 再调 用 getText() 就可以得到本文。 如果是多选的下拉列表,使用 getAllSelectedOptions() 得到所有已选择的项,此方法 会返回元素的集合。 使用  assertArrayEquals()方法来对比期望和实际所选的项是否正确。 调用 getAllSelectedOptions().size()方法来判断已选的下拉列表项数量。 如果想检查 某一个选项是否被择了,可以使用 assertTrue(act_sel_options.contains(“Red”)) 方 法

运行结果

select 自动选择 检查下拉列表的更多相关文章

  1. js单击自动选择文本

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  2. Android小项目之四 自动更新检查的逻辑

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  3. ECshop网点程序优化-后台添加类目自动选择上次父类目并计算Sort Order

    如果在ECshop后台批量添加过大量类目的人都能体会到是多么的不方便(这点还是要说一下ECshop的产品经理,细节上还是要多注意),每次添加都需要在几百个类目里面找到要添加的父类目也是一个麻烦事,比如 ...

  4. JS-加载页面的时候自动选择刚才所选择option

    <body class="no-skin" onload="option_auto(${pd.PACK_SORT})"> <select na ...

  5. 自动选择最佳特征进行分类-SVM (Halcon)

    HALCON12里的example,classify_pills_auto_select_features.hdev. 执行流程: 1.选取相关特征(本例选取color和region组的所有特征)(本 ...

  6. 【摘录】JAVA内存管理-自动选择垃圾收集器算法

    在J2SE 5.0,垃圾收集的默认值:垃圾收集器.堆大小以及JVM的类型(客户端还是服务器)都会根据应用运行的硬件平台和操作系统自动选择.相比之前设置命令行参数的方式,自动选择很好的匹配了不同类型的应 ...

  7. js进阶 9-10 html控件如何实现点击自动选择控件内容

    js进阶 9-10  html控件如何实现点击自动选择控件内容 一.总结 一句话总结: 1.在click事件中,如果focus,那就select 2.blur 1.html中控件添加两种方式? 在表单 ...

  8. Uipath 选择页面下拉列表中的选项

    http://www.rpatokyo.com/ 使用Select item Activity选择页面下拉列表中的选项 在open browser中拖入Select Item Activity,配置参 ...

  9. XML:使用DOM技术解析xML文件中的城市,实现select级联选择

    中国的城市xml格式:cities.xml <?xml version="1.0" encoding="utf-8"?> <china> ...

随机推荐

  1. UEFI + win8 + ubuntu16.04双系统安装

    主要参考 https://linux.cn/article-3178-1.html https://linux.cn/article-3061-1.html 其他 https://jingyan.ba ...

  2. Spring Framework 官方文档学习(一)介绍

    http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#overview-maven-bom ...

  3. Java分为三个体系

    Java分为三个体系 JavaSE(Java2 Platform Standard Edition,java平台标准版), JavaEE(Java 2 Platform,Enterprise Edit ...

  4. 【BZOJ】1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机(模拟+bfs)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1615 这种题..... #include <cstdio> #include <c ...

  5. PHPMailer发送邮箱

    1.可以参考的链接.http://www.helloweba.com/view-blog-205.html 2.下载最新的PHPMailer文件库 3.主要代码 class.phpmailer.php ...

  6. 配置linux的环境变量

    下面是配置linux的环境变量:(记得source .bash_profile). 修改/etc/profile文件 (全局所有用户) vi 此文件/etc/profile在profile文件末尾加入 ...

  7. MathType怎么编辑双箭头

    很多的数学相关工作者在写文章或论文的时候常常会用到数学公式编辑器.MathType就是一款深受大家欢迎的公式编辑器.很多的用户在使用过程中会用到双箭头符号来表示推理过程,但是怎么编辑又不知道,下面本教 ...

  8. UIViewController三种不同的初始化view的方式

    You can specify the views for a view controller using a Storyboard created in Interface Builder. A s ...

  9. windows 系统重装之后怎么恢复oracle数据库

    今天单位的服务器系统进不去了,重做了系统,有重要的oracle数据,经理让我恢复一下oracle数据,试着尝试了一下 1.首先,将原来的ORACLE文件夹改名,原来的路径是D:/oracle.我暂时改 ...

  10. 各种API中文文档下载地址

    转发: http://www.aseoe.com/api-download/download.html jquery easyui 帮助文档: http://download.csdn.net/dow ...