一、目前存在两种方式的滚动条,一种为window滚动条,另一种为非window滚动条。(针对这两种方式的滚动条编写的js脚本不同)
一般滚动条存在页面的方式如下:
例如:一种为:window滚动条,其存在页面中的样式为,例如百度页面上的滚动条,即为标准的window滚动条。
另一种为:非window滚动条情况为:该滚动条存在div区域,在这个div区域上,可能存在一个frame、多个frame或没有frame。
二、处理方法需写js脚本如下:
1、window滚动条的处理:
i、滚动条滚动到顶部:
ii、滚动条滚动到底部:document.documentElement.scrollTop=document.body.scrollTop =999999999;
或者window.scrollTo(0,document.body.scrollHeight);
iii、滚动条滚动到中部:
htmlDom参数值为:document.documentElement.scrollTop=document.body
scrollHeight参数值为:document.body.scrollHeight
public static void scrollToCentre(String htmlDom,String scrollHeight){
JavascriptExecutor js = (JavascriptExecutor) (WebDriver) currentWindow.getDriver().getEngine();
Object scrollHeightValue = js.executeScript("return "+scrollHeight);
int scrollHeightIntValue = Integer.parseInt(String.valueOf(scrollHeightValue));
js.executeScript(htmlDom+".scrollTop="+scrollHeightIntValue/2);
}
iv、滚动条滚动到特定位置:假如需要滚动到scrollLeft = 0,scrollTop = 100
js.executeScript(document.documentElement.scrollTop=document.body.scrollLeft=scrollLeft);
js.executeScript(document.documentElement.scrollTop=document.body.scrollTop=scrollTop);
2、非window滚动条的处理:
滚动条所处在页面情况描述:该滚动存在div区域,并且上面存在一个frame,那么js写法为:top['frameId'].document.getElementById( 'divId );
如果该滚动条上面有多个frame,js写法为:top['name1']['name2']['name3'].document.getElementById( 'divId );
滚动的到页面的位置与上述window的写法一致,例如:
top['frameId'].document.getElementById( 'divId ).scrollTop=0;
此处不再赘述。