从树中进行选取元素,执行双击操作

上一篇 / 下一篇  2013-07-23 17:35:24 / 个人分类:selenium

面朝大海,春暖花開......
专题一:树中获取元素
场景:使用webdriver开展自动化测试时,从树中取值是经常遇到的场景,比如栏目树。
思路:若class contains"x-tree-node-leaf",说明是叶节点,直接点击;
     若 class contains "x-tree-node-collapsed",说明未展开,双击操作;
     若class contains"x-tree-node-expand",则已展开,无需操作;
脚本:(JAVA 语言实现)
public static void DMTree(WebDriver dr,ArrayList<String>menus,String xpath){
WebElement doc_treeview=dr.findElement(By.xpath(xpath));
    for (String menu:menus){
          WebElement doc_div=doc_treeview.findElement(By.xpath(".//span[text()
              ='"+menu+"']/ancestor:div[1]"));
      //判断是不是叶子节点
      if(doc_div.getAttribute("class").contains("x-tree-node-leaf")){
          doc_div.click();
//        System.out.println("叶子节点");
          return;
            }
      else{
          //判断是否展开
          if(doc_div.getAttribute("class").contains("x-tree-node-collapsed")){
 //         System.out.println("节点未展开");
            //调用双击操作
            CommonActions.doubleClick(dr,doc_div);
            }
            else{
            System.out.println("节点已展开");
             }
      }
   }
}
补充:最近发现,上面的这个方法中,树中的元素可以直接找到,而不需要找到根节点,再通过根节点再找其树中元素。故这里补充一个“去掉根节点参数”的方法。
脚本如下:
public static void DMTree(WebDriver dr,ArrayList<String>menus){
for (final String menu:menus){
     WebDriverWait wait=new WebDriverWait(getDriver(),60)
     WebDriver doc_div=wait.until(new ExpectedCondition<WebELement>(){
         public WebElement apply(WebDriver d) {
             return d.findElement(By.xpath());}});
         //判断是不是叶节点
        if (doc_div.getAttribute("class").contains("x-tree-node-leaf")){
            doc_div.click();
              return; }
         //判断是否展开
         else if(doc_div.getAttribute("class").contains("x-tree-node-collapsed"))         
               CommonActions.doubleClick(dr,doc_div);
          else;
     }                     
 }

TAG: 树中获取元素

 

评分:0

我来说两句

Open Toolbar