0

我们有资源管理器菜单(基于 GWT + ExtJS)。并且菜单中的树节点根据屏幕分辨率动态显示。所以这是粗略的可视化

    • 家长
      • 孩子
        • 叶1
        • 叶2
        • 叶3
        • .
        • .
        • 叶10

现在,当页面最初加载时,资源管理器菜单仅显示到 Leaf3 的节点(即在 DOM 中仅存在 Root、Parent、Child、Leaf1、Leaf2、Leaf3 节点)。现在,当我向下滚动 Leaf4,Leaf5..Leaf10 变得可见并且 Root,Parent,Child 变得不可见(在 DOM 中不可用)..如果我再次向上滚动 Root,Parent,Child 变得可见并且 Leaf4,Leaf5,Leaf10 不可见。

树形面板周围的 DIV 元素是具有“overflow:auto”样式的元素

<div unselectable="on" class="x-tree3-node-ct x-tree3 x-component x-unselectable" role="group" tabindex="0" hidefocus="true" id="x-auto-2" aria-activedescendant="x-auto-2__x-auto-2_x-auto-110" style="display: block; overflow: auto; width: 248px; height: 386px;"><div unselectable="on" id="x-auto-2_x-auto-3" class="x-tree3-node" role="presentation">

我有多个用例,我必须上下滚动才能到达根节点和叶节点。所以我试图找出自动化的最佳方法。

我正在使用 WebDriver 2.35 (java)

我尝试了以下代码,但如果我想经常上下滚动,它不是很有效

public void scrollToTreeElement(String treeNodeText){
    String nodeElement = HTMLElement.ADMIN_TREE_NODE+"[contains(text(),'"+treeNodeText+"')]";
    WebElement treeNode = null;

    try{                        
         treeNode = driver.findElement(By.xpath(nodeElement));
         treeNode.click();
        logger.info(treeNode.getText());
    }catch(NoSuchElementException e){
        logger.info("inside catch");

        String allElements = "//*[@class='x-tree3-node']";
        List<WebElement> allSNMPElements = driver.findElements(By.xpath(allElements));
        for(WebElement element : allSNMPElements){
// here i am filtering allElements that doesnt have 'span' node (that has tree text) and then scroll to this element
            if(element.findElements(By.tagName("span")).size()==0){
                scrollToViewPort(element);

            }
        }
        List<WebElement> allTreeNodes = driver.findElements(By.className("x-tree3-node-text"));

    }       
}   

public void scrollToViewPort(WebElement element){       
    ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);",element);               
}   

任何指针..?

4

0 回答 0