• Selenium下拉菜单(Select)的操作Selenium快速入门(五)


      对于一般元素的操作,我们只要掌握本系列的第二,三章即可大致足够。对于下拉菜单(Select)的操作,Selenium有专门的类Select进行处理。文档地址为:http://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/Select.html

      该类只有一个构造函数,Select(WebElement element),如果我们定位的元素并非Select,则会引发异常:UnexpectedTagNameException - when element is not a SELECT

      要懂得Select类的方法的使用,首先要先知道Html中,Select标签的用法。在此不啰嗦,简单提一下就是,Select有两种模式,单选和多选,单选模式就是我们经常见到的下拉框,多选模式,在Select标签中增加 multiple,例如<select name="phones" multiple>,显示的样式如下图,多选的时候,需要按住ctrl+左键点击

      

      下面说说Select类的常用方法。

    方法 说明
    void deselectAll() 取消所有选择项,仅对下拉框的多选模式有效,若下拉不支持多选模式,则会抛出异常 UnsupportedOperationException(不支持的操作)
    void deselectByIndex(int index) 取消指定index的选择,index从零开始,仅对多选模式有效,否则抛出异常 UnsupportedOperationException(不支持的操作)
    void deselectByValue(String value) 取消Select标签中,value为指定值的选择,仅对多选模式有效,否则抛出异常 UnsupportedOperationException(不支持的操作)
    void deselectByVisibleText(String Text) 取消项的文字为指定值的项,例如指定值为Bar,项的html为 <option value="foo">Bar</option>仅对多选模式有效,单选模式无效,但不会抛出异常
    List<WebElement>getAllSelectedOptions()  获得所有选中项,单选多选模式均有效,但没有一个被选中时,返回空列表,不会抛出异常
    WebElement getFirstSelectedOption()  获得第一个被选中的项,单选多选模式均有效,当多选模式下,没有一个被选中时,会抛出NoSuchElementException异常
    List<WebElement>getOptions()  获得下拉框的所有项,单选多选模式均有效,当下拉框没有任何项时,返回空列表,不会抛出异常
    boolean isMultiple()  判断下拉框是否多选模式
    void selectByIndex(int index) 选中指定index的项,单选多选均有效,当index超出范围时,抛出NoSuchElementException异常
    void selectByValue(String value) 选中所有Select标签中,value为指定值的所有项,单选多选均有效,当没有适合的项时,抛出NoSuchElementException异常
    void selectByVisibleText(String text) 选中所有项的文字为指定值的项,与deselectByValue相反,但单选多选模式均有效,当没有适合的项时,抛出NoSuchElementException异常

      看起来似乎很难记,实际很容易,select开头的,单选多选均有效;deselect开头的,仅对多选模式有效;返回选中项的,单选多选均有效,返回List的不会抛出异常。

       下面用简单例子,展示如何操作下拉菜单。我们在项目文件夹下,添加html文件夹,并增加一个dropdown.html,文件结构如下

      

      dropdown.html的html代码为

    <!DOCTYPE html>
    <html>
    <head> 
    <meta> 
    <title>下拉列表</title> 
    </head>
    <body>
    <form action="">
    <select name="phones" multiple>
    <option value="华为">华为</option>
    <option value="三星">三星</option>
    <option value="中兴">中兴</option>
    <option value="小米">小米</option>
    </select>
    </form>
    
    </body>
    </html>

      我们的目标是选中“中兴”,代码为

             //得到WebDriver
             WebDriver driver=DriverHelper.CreateChromeDriver();
             //转到我们刚才编写的html
             driver.get("D:/WorkSpace/SeleniumTest/html/dropdown.html");
             //找到下拉框元素
             WebElement element=driver.findElement(By.name("phones"));
             //转化为Select
             Select select=new Select(element);
             //使用value也可以
             select.selectByValue("中兴");
             //使用可见文字也可以
             //select.selectByVisibleText("中兴");
             //使用index也可以
             //select.selectByIndex(2);         

      最终执行的效果如下:

      

  • 相关阅读:
    Selenium:下拉框处理(Select模块)
    Selenium:三种等待方式详解
    Fiddler断点调试
    Fiddler修改请求参数
    Jenkins邮件配置
    转-web自动化测试,定位不到元素的原因及解决方案
    Allure--自动化测试报告生成
    jenkins--Jenkins+Git+coding+maven 实现自动化测试持续集成
    8种定位方式以及等待详解
    java String、StringBuilder
  • 原文地址:https://www.cnblogs.com/devtester/p/8580524.html
Copyright © 2020-2023  润新知