[Selenium]Turn Page By Scroll Bar
Description:
Need to turn page by operating scroll bar and find out the element in the current page.
Previous page will not exist in DOM structure when turning page.
Solution:
- Get the total height, button height, scroll bar height
- Calculate total move height, totalMoveHeight = totalHeight - 2*buttonHeight - scrollbarHeight
- Calculate page number, pageNum = totalMoveHeight/scrollbarHeight
- Calculate the last page when it is less then a whole page, lessThenOnePageHeight = totalMoveHeight%scrollbarHeight
- Turn page according to the page number and lessThenOnePageHeight
Code:
/**************************Report Portal–>ReportProductionFlow.java******************************/ public void seleteTemplate_NotClassifiedFactsheet(String template){ //Scroll the scroll bar page by page Actions actions = new Actions(page.getDriver()); int totalHeight = page.getDiv_scrollbar_TemplateMappingSetting().getSize().getHeight(); int buttonHeight = page.getButton_ScrollbarDown().getSize().getHeight(); int scrollbarHeight = page.getScrollbar_TemplateMappingSetting().getSize().getHeight(); int totalMoveHeight = totalHeight - buttonHeight - buttonHeight - scrollbarHeight; int pageNum = totalMoveHeight/scrollbarHeight; int lessThenOnePageHeight = totalMoveHeight%scrollbarHeight; if(lessThenOnePageHeight>0){ pageNum+=1; } for(int i=0;i<pageNum;i++){ if ((i==(pageNum-1))&&(lessThenOnePageHeight>0)) { scrollbarHeight=lessThenOnePageHeight; } actions.dragAndDropBy(page.getScrollbar_TemplateMappingSetting(), 0, scrollbarHeight).perform(); SeleniumUtil.sleep(1); List <WebElement> groupList = page.getGroupListInTemplateMapping(); int groupNum = groupList.size(); for(int j=0;j<groupNum;j++){ WebElement groupEl=groupList.get(j); String groupName = groupEl.getText(); if(groupName.equals("Not Classified")){ System.out.println("Find Group : "+groupName+" in page "+i); WebElement factsheetTemplateEl=page.getDDL_NotClassifiedFactsheet(); factsheetTemplateEl.click(); page.getLink_Template(template).click(); } } } } /**************************Report Portal–>ReportProductionFlow.java******************************/
/**************************Report Portal–>ReportProductionPage.java******************************/ public WebElement getDiv_scrollbar_TemplateMappingSetting(){ return SeleniumUtil.waitForElementPresent(driver, By.cssSelector("div#uidialog7.uidialog div.uidialogcontent div#mapEditDlgDiv div.tempmapsetup div.itemsgrid div.rtq-grid div.rtq-grid-sz div.rtq-scrollpanel div.rtq-scrollbar.rtq-scrollbar-y")); } public WebElement getButton_ScrollbarDown(){ return SeleniumUtil.waitForElementPresent(driver, By.cssSelector("div#uidialog7.uidialog div.uidialogcontent div#mapEditDlgDiv div.tempmapsetup div.itemsgrid div.rtq-grid div.rtq-grid-sz div.rtq-scrollpanel div.rtq-scrollbar.rtq-scrollbar-y a.rtq-scrollbar-down")); } public WebElement getScrollbar_TemplateMappingSetting(){ return SeleniumUtil.waitForElementPresent(driver, By.cssSelector("div#uidialog7.uidialog div.uidialogcontent div#mapEditDlgDiv div.tempmapsetup div.itemsgrid div.rtq-grid div.rtq-grid-sz div.rtq-scrollpanel div.rtq-scrollbar.rtq-scrollbar-y div.rtq-scrollbar-bar")); } /**************************Report Portal–>ReportProductionFlow.java******************************/
[Selenium]Turn Page By Scroll Bar的更多相关文章
- Selenium - IWebDriver 控制scroll bar到底部
有时候我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需要借助js是来进行操作.一般用到操作滚动条的会两个场景: 注册时的法律条文需要阅读,判断用户是否阅读的标准是:滚动条是否拉 ...
- 浅析selenium的page object模式
selenium目前比较流行的设计模式就是page object,那么到底什么是page object呢,简单来说,就是把页面作为对象,在使用中传递页面对象,来使用页面对象中相应的成员或者方法,能更好 ...
- VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)
回顾上一节,鸡啄米讲的是组合框控件Combo Box的使用.本节详解滚动条控件Scroll Bar的相关内容. 滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条.前面讲的列表框 ...
- (七)对话框,单选框(radiobox),复选框(checkbox),列表框(ListBox),组合框(CComboBox),水平滚动条(Horizontal scroll bar),微调(旋转)spincontrol,列表视图控件CListCtrl,静态控件static
1,模态对话框和非模态对话框 // 模态对话框 void CMainFrame::OnDialogExec() { // TODO: 在此添加命令处理程序代码 // 创建对话框对象 CDialog d ...
- NGUI多行输入框和滚动条结合使用(text list script 和scroll bar script)
一,我们添加一个label,如下图:将label属性设置 二,给label添加一个box collider.然后在add component 添加test list,如下图: 三,添加一个脚本Test ...
- NGUI的滚动条的制作(scroll bar script)
一,我们添加一个sprite,添加一个box collider,然后添加一个scroll bar script,我们来看看scroll bar script的属性 看到background和forgr ...
- VS2010-MFC(常用控件:滚动条控件Scroll Bar)
转自:http://www.jizhuomi.com/software/191.html 滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条.前面讲的列表框和组合框设置了相应属性 ...
- Python+Selenium使用Page Object实现页面自动化测试
Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通 ...
- Selenium关于Page Objects
介绍页面对象设计模式.一个页面对象表示在你测试的web页面用户交互的界面. 使用页面对象模式的有点: 创建可重用的代码可以在多个测试用例中使用 减少重复的代码量 如果用户界面改变,只需要修改一个地方 ...
随机推荐
- sql中的一些通用函数
1. SQL中使用case,when,then SELECT CASE TYPE THEN '正常' THEN '密码错误' ELSE '不正常' END '状态' FROM tbl_user 或者 ...
- CSS为英文和中文字体分别设置不同的字体
font-family的调用方法: div { font-family:Arial,'Times New Roman','Microsoft YaHei',SimHei; font:bold 12px ...
- 使用_beginThreadex创建多线程(C语言版多线程)
_beginThreadex创建多线程解读 一.需要的头文件支持 #include <process.h> // for _beginthread() 需要的设置:Proj ...
- zookeeper命名服务
zookeeper概念 zooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,底层组成单元是znode,对于zookeeper来说,所有的功能都是基于znode来实现的,因此有万物皆节点 ...
- String的不变性到final在java中用法
final在Java语言里面啥意思 final修饰一个类,那么这个类就是不可继承.string就是一个非常有名的被final修饰的类,不过他的更加有名的是“不可被修改”. 究竟什么是不可改变?stri ...
- sql server利用cte递归查询
1.数据环境准备 参考Oracle递归查询文章. 2.查询某个节点下的所有子节点 with cte(id,name,parent_id) as ( select id,name,parent_id f ...
- 把XML保存为ANSI编码
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlText); //plu.xml 编码是ANSI的.否则称上品名是乱码 XmlEle ...
- java 输出helloword
1,安装jdk;2,配置环境变量;3,新建D:/Test.java文件;4,文件内容如下:public class Test{ public static void main(String[] arg ...
- 关于 App.config文件出错,配置系统未能初始化。 问题解决方案
如果配置文件中包含 configSections 元素,则 configSections 元素必须是 configuration 元素的第一个子元素.将appSettings放到configSecti ...
- Jython:java调用python文件之第三方包路径问题
本文转载自:http://blog.csdn.net/ztf312/article/details/51338060 本方法解决python代码的可移植性,不需要在新机器上配置python环境,只通过 ...