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; }

浙公网安备 33010602011771号