Selenium 操作Slider 进度条回退

操作Slider和操作Canvas其实是一样的,都是用Actions类。额外要提出的是,操作Slider时的鼠标定位有点意思。比如我想从0拉动到60是比较简单,可是从60拉动到0时,就要琢磨一会儿,避免大家浪费时间,分享一下从60拉动到0的方法。

在61的时候,元素大小为112.23*2,那么回退到0的时候,selenium以相对坐标(112.23/2=56,1)为中心,需要移动到相对坐标(-56,1)才是0.

actions.moveToElement(element,-56,1).clickAndHold().release().perform();

在100的时候,元素大小为183.99*2,那么回退到0的时候,selenium以相对坐标(183.99/2=92,1)为中心,需要移动到相对坐标(-92,1)才是0. 因为坐标只能时整数,测试也不能要求UI设计,所以,有的时候回退到0的时候不能一次完成,只能用个循环来做,具体看伪代码吧。

private Boolean setXXXToZero(WebElement elt){
        Integer xCurrent=getXXXValue();
        while(xCurrent!=0){
            elt.mouse_move(-Math.floorDiv(xCurrent*183,100*2),1);//这里一定要除以2,坐标在中心
            waitThat(1000);
            xCurrent=getXXXValue();
        }

        return getXXXValue()==0;
    }

private void mouse_move(int xStart, int yStart){
        Actions actions=new Actions(driver);
        actions.moveToElement(element,xStart,yStart).clickAndHold().release().perform();
    }

private Integer getXXXValue()
{
return xxx;
}
View Code

 

posted @ 2021-03-16 13:21  flying0dancing  阅读(257)  评论(0)    收藏  举报