Selenium2学习-010-WebUI自动化实战实例-008-Se

系统 1666 0

此文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,对下拉列表框 Select 的操作。

下拉列表是 Web UI 自动化测试过程中使用率非常高的,通常有两种形式的下拉列表,一种是 Select 的下拉列表,此种操作的时候比较简单,定位到元素后直接操作即可;还有的下拉列表是以多个 div + js + input 的形式实现,input 用于存储选择的项的 value 值;当然也会有其他方式实现的下拉列表。

希望能对初学 Selenium2 WebUI 自动化测试编程的亲们有所帮助。若有不足之处,敬请大神指正,不胜感激!

以下为 Selenium 操作下拉列表 Select 的 Java 自动化测试脚本实例源代码,敬请参阅!

        
           1
        
        
          package
        
        
           main.aaron.demo.droplist;


        
        
           2
        
        
           3
        
        
          import
        
        
           main.aaron.sele.core.TestCase;


        
        
           4
        
        
           5
        
        
          import
        
        
           org.openqa.selenium.By;


        
        
           6
        
        
          import
        
        
           org.openqa.selenium.WebElement;


        
        
           7
        
        
          import
        
        
           org.openqa.selenium.support.ui.Select;


        
        
           8
        
        
          import
        
        
           org.testng.annotations.Test;


        
        
           9
        
        
          10
        
        
          /**
        
        
          11
        
        
           * Selenium 操作下拉列表实例-Select


        
        
          12
        
        
           * 


        
        
          13
        
        
           * 
        
        
          @author
        
        
           Aaron.ffp


        
        
          14
        
        
           * 
        
        
          @version
        
        
           V1.0.0: autoSeleniumDemo main.aaron.demo.droplist Droplist01.java, 2015-6-16 19:03:51 Exp $


        
        
          15
        
        
          */
        
        
          16
        
        
          public
        
        
          class
        
         Droplist01 
        
          extends
        
        
           TestCase{


        
        
          17
        
        
          //
        
        
           获取需要打开的链接的 URL 路径
        
        
          18
        
        
          private
        
        
          final
        
         String baseUrl = 
        
          this
        
        .PROJECTHOME + 
        
          this
        
        .FILESEPARATOR + "source" + 


        
          19
        
        
          this
        
        .FILESEPARATOR + "html" + 
        
          this
        
        .FILESEPARATOR + "selectDemo.html"
        
          ;


        
        
          20
        
        
          21
        
        
              @Test


        
        
          22
        
        
          public
        
        
          void
        
        
           testDropList(){


        
        
          23
        
        
          this
        
        .webdriver.get(
        
          this
        
        
          .baseUrl);


        
        
          24
        
        
          25
        
        
          //
        
        
           获取元素-下拉列表
        
        
          26
        
                 WebElement goodsTypeList = 
        
          this
        
        .webdriver.findElement(By.id("goodsType"
        
          ));


        
        
          27
        
        
          28
        
        
          //
        
        
           将元素转换为 Select
        
        
          29
        
                 Select gtl = 
        
          new
        
        
           Select(goodsTypeList);


        
        
          30
        
        
          31
        
        
          //
        
        
           模拟用户点击动作展开下拉列表,也可不执行直接选择;


        
        
          32
        
        
          //
        
        
           若是执行此步再选择下拉列表之后无其他操作时,列表会一直存在;执行其他操作时,列表收起
        
        
          33
        
        
                  goodsTypeList.click();


        
        
          34
        
        
          35
        
        
          //
        
        
           通过列表项的 option 索引选择,也可不执行
        
        
          36
        
                 gtl.selectByIndex(3
        
          );


        
        
          37
        
        
          38
        
        
          this
        
        .webdriver.findElement(By.id("goods"
        
          )).clear();


        
        
          39
        
        
          this
        
        .webdriver.findElement(By.id("goods")).sendKeys(
        
          this
        
        
          .selectSelected(gtl));


        
        
          40
        
        
          41
        
        
          /**
        
        
          42
        
        
                  // 通过列表项的 option 的 value 值选择


        
        
          43
        
        
                  gtl.selectByValue("3v");


        
        
          44
        
        
          45
        
        
                  // 通过列表项的 option 的 text 值选择


        
        
          46
        
        
                  gtl.selectByVisibleText("汽车精品");


        
        
          47
        
        
          48
        
        
                  // 遍历列表项的所有可选项,并选择对应的项


        
        
          49
        
        
                  for (int i = 0; i < gtl.getOptions().size(); i++) {


        
        
          50
        
        
                      gtl.getOptions().get(i).click();


        
        
          51
        
        
                  }


        
        
          52
        
        
          53
        
        
                  // 遍历列表项的所有可选项,并选择对应的项


        
        
          54
        
        
                  for (WebElement item : gtl.getOptions()) {


        
        
          55
        
        
                      item.click();


        
        
          56
        
        
                  }


        
        
          57
        
        
          */
        
        
          58
        
        
              }


        
        
          59
        
         }
      
Selenium 操作下拉列表实例-Select 源代码

以下为上述代码中调用的方法源码

        
           1
        
        
          /**


        
        
           2
        
        
               * 获取 Select 已选中的项的 text 值


        
        
           3
        
        
               * 


        
        
           4
        
        
               * @author Aaron.ffp


        
        
           5
        
        
               * @version V1.0.0: autoSeleniumDemo main.aaron.sele.core SeleniumCore.java selectSelected, 2015-6-16 19:40:02 Exp $


        
        
           6
        
        
               * 


        
        
           7
        
        
               * @param select : Select 下拉列表对象


        
        
           8
        
        
               * @return 已选择项的 text 值


        
        
           9
        
        
               */


        
        
          10
        
        
              public String selectSelected(Select select){


        
        
          11
        
        
                  String text = "";


        
        
          12
        
        
          13
        
                 for (int i = 0; i 
        
          <
        
        
           select
        
        
          .getOptions().size(); i++) {


        
        
          14
        
        
                      if (select.getOptions().get(i).isSelected()) {


        
        
          15
        
        
                          text 
        
        
          = select.getOptions().get(i).getText();


        
        
          16
        
        
          17
        
        
          return text;


        
        
          18
        
        
                      }


        
        
          19
        
        
                  }


        
        
          20
        
        
          21
        
        
                  return text;


        
        
          22
        
        
              }
        
      
selectSelected 方法

以下为 Select 下拉列表源码(selectDemo.html):

        
           1
        
        
          <
        
        
          html
        
        
          >
        
        
           2
        
        
          <
        
        
          head
        
        
          >
        
        
           3
        
        
          <
        
        
          meta 
        
        
          charset
        
        
          ='utf-8'
        
        
          >
        
        
           4
        
        
          <
        
        
          title
        
        
          >
        
        下拉列表框
        
          </
        
        
          title
        
        
          >
        
        
           5
        
        
          </
        
        
          head
        
        
          >
        
        
           6
        
        
           7
        
        
          <
        
        
          body
        
        
          >
        
        
           8
        
        
          <
        
        
          a 
        
        
          id
        
        
          ="goodtype"
        
        
          >
        
        商品分类:
        
          </
        
        
          a
        
        
          >
        
        
           9
        
        
          <
        
        
          select 
        
        
          id
        
        
          ="goodsType"
        
        
          >
        
        
          10
        
        
          <
        
        
          option 
        
        
          value
        
        
          ="0v"
        
        
          >
        
        请选择...
        
          </
        
        
          option
        
        
          >
        
        
          11
        
        
          <
        
        
          option 
        
        
          value
        
        
          ="1v"
        
        
          >
        
        笔记本
        
          </
        
        
          option
        
        
          >
        
        
          12
        
        
          <
        
        
          option 
        
        
          value
        
        
          ="2v"
        
        
          >
        
        硬件外设
        
          </
        
        
          option
        
        
          >
        
        
          13
        
        
          <
        
        
          option 
        
        
          value
        
        
          ="3v"
        
        
          >
        
        大家电
        
          </
        
        
          option
        
        
          >
        
        
          14
        
        
          <
        
        
          option 
        
        
          value
        
        
          ="4v"
        
        
          >
        
        创意小电
        
          </
        
        
          option
        
        
          >
        
        
          15
        
        
          <
        
        
          option 
        
        
          value
        
        
          ="5v"
        
        
          >
        
        个护电器
        
          </
        
        
          option
        
        
          >
        
        
          16
        
        
          <
        
        
          option 
        
        
          value
        
        
          ="6v"
        
        
          >
        
        汽车精品
        
          </
        
        
          option
        
        
          >
        
        
          17
        
        
          <
        
        
          option 
        
        
          value
        
        
          ="7v"
        
        
          >
        
        办公文具
        
          </
        
        
          option
        
        
          >
        
        
          18
        
        
          </
        
        
          select
        
        
          >
        
        
          19
        
        
          20
        
        
          <
        
        
          input 
        
        
          id
        
        
          ="goods"
        
        
           type
        
        
          ="text"
        
        
          ></
        
        
          input
        
        
          >
        
        
          21
        
        
          </
        
        
          body
        
        
          >
        
        
          22
        
        
          </
        
        
          html
        
        
          >
        
      
Select 下拉列表源码 selectDemo.html

  由上述源码可知,操作下拉列表-Select 时,首先要获得 Select 元素(Selenium 自动化页面操作的基础),再 new 一个 Select 对象,然后对 Select 对象进行操作,即可正确的进行下拉列表的操作,以及获取下拉列表当前已选择的项值。动手能力强的亲们,也可以自己封装一下 Selenium 对 Select 的操作几个有用方法,例如:判断 option 的 value 是否存在;判断 option 的 text 值是否存在;判断 index 值是否超出 option 的数组边界。。。等等,用于后续的 WEB UI 自动化。

  选择下拉列表项的方法有三种:(1)option 的 index,(2)option 的 value,(3)option 的 text。无论选择哪种方法,建议对三者的值进行校验判断,否则易出现元素不存在的错误,当然也可以对代码 try...catch 一下,以处理异常。

  PS:使用上述源码时,注意一下几点:

  1、替换源码中的 baseUrl 为实际路径;

  2、将 selectSelected 方法正确添加到源码,否则执行的时候会报错

  3、自行添加启动浏览器的代码

 

下拉列表框操作下期精彩: Selenium2学习-014-WebUI自动化实战实例-012-Selenium 操作下拉列表实例-div+{js|jquery}

 

至此, WebUI 自动化功能测试脚本 第 008 篇-下拉列表框 Select 操作 顺利完结,希望此文能够给初学 Selenium 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

 

Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论