selenium-------------------对于页面滚动条的处理

来源:互联网 发布:各国医生的收入知乎 编辑:程序博客网 时间:2024/04/29 17:59

一、目前存在两种方式的滚动条,一种为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;

                此处不再赘述。

                   

0 0