zoukankan      html  css  js  c++  java
  • [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:

    1. Get the total height, button height, scroll bar height
    2. Calculate total move height, totalMoveHeight = totalHeight - 2*buttonHeight - scrollbarHeight
    3. Calculate page number, pageNum =  totalMoveHeight/scrollbarHeight
    4. Calculate the last page when it is less then a whole page, lessThenOnePageHeight = totalMoveHeight%scrollbarHeight
    5. 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******************************/
    
     
    
  • 相关阅读:
    使用匿名内部类和lamda的方式创建线程
    匿名内部类与lamda表达式
    机器学习中数据量多少与模型过拟合欠拟合之间的关系
    设计模式和java实现
    八大排序算法汇总——java实现
    java多线程并发编程中的锁
    java NIO
    网络通信引擎ICE的使用
    机器学习算法汇总大梳理
    处理样本不均衡数据
  • 原文地址:https://www.cnblogs.com/MasterMonkInTemple/p/4552592.html
Copyright © 2011-2022 走看看