文档章节

Selenium使用要点记录<三>

嗨椒爆炒小小鱼
 嗨椒爆炒小小鱼
发布于 2014/06/05 18:34
字数 701
阅读 117
收藏 5

继续很不负责任的接上回,前一篇文章里边提到了selenium处理popup window和等待加载的scenario.

今天继续讨论一个使用selenium很容易遇到的问题和一个很不常用的问题,好吧,开始讲起:

1.selenium处理下拉列表的各种方法

a.通过option元素里面的value属性值选中

public void selectOptionByValue(WebElement select, String value, WebDriver driver) {
        //select = driver.findElement(By.id("id of select element")):
        List<WebElement> allOptions = select.findElements(By
                .tagName("option"));
        for (WebElement option : allOptions) {
            if (value.equals(option.getAttribute("value"))) {
                option.click();
                break;
            }
        }
    }

b.通过option元素显示值选中

public void selectOptionByVisibleText(String elementId, String visibleText){
        WebElement ele = driver.findElement(By.id(elementId));
        Select select = new Select(ele);
        select.selectByVisibleText(visibleText);
    }

c.通过opton在select中的index(从0开始)选中

public void selectOptionByIndex(By by, String index){
        try{
            int ind = Integer.parseInt(index);
            WebElement ele = driver.findElement(by);
            this.selectOptionByIndex(ele, ind);
        }catch(Exception e){
            loggerContxt.error(String.format("Please configure a numeric as the index of the optioin for %s..",by.toString()));
            return;
        }
    }

d.来个下拉列表选中多个选项的情况

/**
     * @elementId id of the select element
     * @param periodArr is the array of the indexes of the options in the dropdown list.
     */
    public void selectMultipleOptionsInDropdownList(String elementId, String[] periodArr){
        //大家自行传入这个driver对象
        Actions actions = new Actions(this.driver);
        //我这里单个的option选中是用的option的index通过xpath的方式定位的,大家可以尝试上边其他的方式
        for (int i = 0; i < periodArr.length; i++) {
            try{
                int num = Integer.parseInt(periodArr[i]);
                WebElement ele = driver.findElement(
                        By.xpath(String.format(".//select[@id='%s']/option[%d]",elementId,num)));
                actions.moveToElement(ele);
                if (!ele.isSelected()) {
                    actions.click();
                }
            }catch(Exception e){
                loggerContxt.info(String.format("Failed to parse the radia count::%s for Quater peroid.",periodArr[i]));
                continue;
            }
        }
        actions.perform();

暂时就列这么些关于下拉列表的处理吧,这个挺好google,实在想偷懒的可以给我留言。

2.元素拖拽,感觉在自动化测试里边这种需求比较少,但是我还是碰到了的哈

      WebElement element1 = driver.findElement(By.id("element1"));
      WebElement element2 = driver.findElement(By.id("element2"));

      Actions actions = new Actions(driver);

      //选中需要拖动的元素,并且往x,y方向拖动一个像素的距离,这样元素就被鼠标拉出来了,并且hold住
      actions.clickAndHold(element1).moveByOffset(1, 1);
      //把选中的元素拉倒目的元素上方,并且释放鼠标左键让需拖动元素释放下去
      actions.moveToElement(element2).release();
      //组织完这些一系列的步骤,然后开始真实执行操作
      Action action = actions.build();
      action.perform();

其实Actions里边有public Actions dragAndDrop(WebElement source, WebElement target)这个方法能直接去拖拽元素,可能我的界面有点不太规范,用官方提供的这个一直不成功,所以我在这一系列的子操作之间加了一个小的步骤:选中source element之后往x,y放下拖动一个像素。

大家稍微去看看Actions类里边还能发现很多关于元素操作的方法,希望你可能在里边能找到解决你需求的方法。

© 著作权归作者所有

共有 人打赏支持
嗨椒爆炒小小鱼
粉丝 7
博文 5
码字总数 4757
作品 0
浦东
selenium系列----->脚本元素定位实例学习

Element Locators(元素定位器) Selenium Element Locator:http://blog.csdn.net/caiqcong/article/details/7542226 selenium中元素定位器的用法:http://blog.163.com/yangjianli/blog......

智能小松鼠
2015/02/17
0
0
Selenium 使用要点记录

Selenium 到底是个啥高级货? Selenium是针对Web application的一个开源的自动化测试框架,其实大家可以去Selenium官网去仔细看看哈, 大家可以顺带去提高哈自己的英语水平。当然selenium虽然...

嗨椒爆炒小小鱼
2014/06/04
0
0
使用 Selenium 编写脚本

使用 IBM Website Monitoring 测试网站可用性,第 1 部分 使用 Selenium 编写脚本 Andrew Chan 2017 年 12 月 26 日发布 系列内容: 此内容是该系列 4 部分中的第 # 部分: 使用 IBM Websit...

Andrew Chan
2017/12/26
0
0
Selenium 使用要点记录

书接上回,最近项目里边新的release需要move to uat。然后我很光荣的被委派去给tester执行自动化测试脚本做support,让我极度遗憾的是tester不是妹子,表示本丝注定单身孤独终老的命啊。 好吧...

嗨椒爆炒小小鱼
2014/06/04
0
0
Selenium2(webdirver)入门之环境搭建(Java版)

最近在研究Java+selenium2的自动化测试,网上的资料比较多,自己学习的同时也顺便记录一下,加深印象的同时也方便以后回顾。 一、开发环境:   1、JDK1.6   2、Eclipse:Version: Kepler...

IT侠
2016/10/08
23
0

没有更多内容

加载失败,请刷新页面

加载更多

arts-week10

Algorithm 905. Sort Array By Parity - LeetCode Review Who’s Afraid of the Big Bad Preloader? 一文读懂前端缓存 一个网络请求3个步骤:请求,处理,响应,而前端缓存主要在请求处响应这两步...

yysue
今天
4
0
00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
5
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
158
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部