这里面主要由链接(http://selenium-tutorial.blogspot.sg/2013/02/scroll-page-webdriver.html)整理过来,主要回答了如何用webdriver来滚动页面,滚上滚下,滚到指定元素以及怎么识别滚动条等。

1.  利用selenium中的focus(locator)函数实现(Link)

@Test
public void testFocus() throws Exception {selenium.open("/");selenium.windowMaximize();selenium.type("q", "selenium wiki");selenium.click("btnG");//Waiting for an elementfor (int second = 0;; second++) {if (second >= 60) fail("timeout");try { if (selenium.isElementPresent("link=Selenium Overview - Wiki - Liferay.com")) break; } catch (Exception e) {}Thread.sleep(1000);}//Set focus on element --then page will scroll down --focus will be on that elementselenium.focus("link=Selenium Overview - Wiki - Liferay.com");//To capture a screenshotselenium.captureScreenshot("c:/naga/screenshot.png");Thread.sleep(10000);
}

2. 利用webdriver执行脚本直接滚动到指定坐标位置(LinkLink2)

 public static void test1() throws InterruptedException{WebDriver driver = new FirefoxDriver();driver.get("http://www.nytimes.com/");((JavascriptExecutor)driver).executeScript("scrollTo(0,3000)");Thread.sleep(5000L);}
((JavascriptExecutor) driver).executeScript("scroll(0,250);");  //-250
((JavascriptExecutor) driver).executeScript("scroll(250,0);");
((JavascriptExecutor) driver).executeScript("window.scrollBy(0,250)", "");
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();" ,webElement);

3. 判断是否有滚动条可以比较窗口高度和滚动条高度(Link)

Selenium.type(xpath of the text-area element,text value);
String str1=Selenium.getEval("this.browserbot.getCurrentWindow().document.getElementsByClassName('cssclassname')[0].clientHeight");
String str = Selenium.getEval("this.browserbot.getCurrentWindow().document.getElementsByClassName('cssclassname')[0].scrollHeight");
int clientHeight = Integer.parseInt(str1);
int scrollHeight = Integer.parseInt(str);if(clientHeight < scrollHeight){System.out.println("Vertical scrollbar appears");
}else{System.out.println("Vertical scrollbar is not appear");
}

4. 滚动到目标元素的纵坐标位置(Link)

public void scrollAndClick(By by)
{WebElement element = driver.findElement(by);int elementPosition = element.getLocation().getY();String js = String.format("window.scroll(0, %s)", elementPosition);((JavascriptExecutor)driver).executeScript(js);element.click();
}

5. 滚动到指定元素位置

WebElement element = webdriver.findElement(locator);
((Locatable)element).getLocationOnScreenOnceScrolledIntoView();

发现最新的webdriver代码已改,上面的函数已经没有了,经过试验一下代码可以替换:

         Coordinates coor = ((Locatable)element).getCoordinates();coor.inViewPort();

WebDriver中页面滚动(scrolling)相关推荐

  1. table列最小宽度 vue_vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)...

    mounted() { // 在mounted中监听表格scroll事件 this.$refs.scrolltable.addeventlistener( 'scroll',(event) => ...

  2. labview在2048中添加时间滚动条_Axure 教程:不可见滚动条的页面滚动效果

    在设计产品原型的过程中,经常会遇到这样的一种场景--所要展示的内容,超出了当前可视页面范围.遇到这种情况,通常使用Axure动态面板的滚动条设置来解决. 产品原型设计是产品经理每日或周期性必须经历的事 ...

  3. js控制页面滚动到指定位置,js中scrollIntoView()的用法

    js中scrillIntoView()的用法--页面滚动到指定位置 最近遇到一个问题,在一个页面上,点击某个按钮时,滚动到页面的某一位置. 如图: 如果是我写的话,我可能会先获取滚动到的元素,然后获取 ...

  4. vue2.0中的滚动问题--点击跳转到页面指定位置

    前言:我在项目中,需要实现一个发布评论,然后让页面滚动到发布评论的位置.之后百度了几种方法,一一验证之后都不能实现,下面将列出使用后出现的问题.以及自己的尝试. 1 - 3 这种方法得到的docume ...

  5. vue中禁止页面滚动/滚动事件穿透

    1.移动端 在蒙层所在div上加 @touchmove.prevent <div class="maskBox" @touchmove.prevent></div ...

  6. vue中禁止页面滚动/滚动事件穿透-弹出蒙版时弹出层下面还可以滚动问题解决

    弹出层时,蒙版下还可以滚动页面 移动端 在蒙层所在div上加 @touchmove.prevent <div class="maskBox" @touchmove.preve ...

  7. [导入]控制IFrame里的页面滚动原来如此简单:)

    图片控制页面滚动 常用效果之一 步骤一:在当前网页中插入其它网页 <iframe name=a1 align=left src="page.htm" frameborder= ...

  8. 页面滚动时触发图片逐帧播放_如何在滚动效果上创建逐帧运动图像

    页面滚动时触发图片逐帧播放 A step by step guide on how to create that dynamic image background you see everywhere ...

  9. 解决iframe在ios中无法滚动的bug

    https://fly.layui.com/jie/32020/(无效) 修改方法: 1.在嵌入进iframe的每个页面的<body>里面加个id,如<body id="i ...

最新文章

  1. SAP MIGO对工单做101收货,报错 - Check table TFBEFU_CR entry 10 does not exist – 对策
  2. 3种方法来卸载Ubuntu软件
  3. boost::graph_property_iter_range用法的测试程序
  4. “内部人”的信息安全架构---信任体系
  5. matlab ssgs工具箱,基于PI控制方式的1A开关电源MATLAB仿真研究
  6. python 自动点击上传以后上传文件,python使用selenium模拟点击网页实现自动导入上传文件功能...
  7. 移动端常用的四个框架
  8. 线程池最佳线程数量到底要如何配置?
  9. 基于Redis的限流系统的设计
  10. arm linux 内存压力测试,嵌入式中如何给内存做压力测试?
  11. 像中文的罗马音字体复制_罗马音字体复制下载
  12. Apple Pay如何使用?全网最完美攻略(图文教程)!
  13. python实部和虚部_Python复数表示表示和计算
  14. 速读原著-UnixLinux基础(六)
  15. 宇宙简史|生物学家也要了解的物理
  16. 漏洞利用-SSH Banner信息获取
  17. 爬虫实践: 获取百度贴吧内容
  18. Python-Selenium-OSError: [WinError 6] 句柄无效
  19. 开启TX2、Xavier最大性能 Opening the Max performance of TX2、Xavier
  20. jQuery中toggle与slideToggle以及fadeToggle之间的不同

热门文章

  1. 形式语言与自动机 Part 3.有限自动机
  2. 解决docker容器中使用composer,无法解析安装包
  3. 光伏电站运维管理方案
  4. Maven阿里云镜像以及仓库地址修改
  5. 蘑菇街防重复请求处理的实践与总结
  6. 【金三银四】一个问题就知道你会不会CSS了
  7. javaScript中值传递和引用传递
  8. H5分享页面(1)——web端二次分享配置内容
  9. java 动态代理相关记录
  10. 微信的服务器 上海,昨下午部分用户无法收发文字信息和登录 微信回应:上海机房服务器发生故障 现已恢复...