您的位置:首页 > Web前端 > JavaScript

Selenium2关键话题:弹出框、页面跳转、遍历相同控件、执行JS

2014-07-07 14:27 483 查看



 

1、对话框处理

     Alert alert = driver.switchTo().alert();

     alert.accept(); //确定
     alert.dismiss();  //取消
     alert.getText(); //取到文本内容
     实际系统中,弹出窗口必定是某些操作完成、信息加载之后用做提示,因此弹出窗口有时出现得快,有时出现得慢,直接使用driver.switchTo().alert();很容易出现执行失败的情况。
     咱们先判断是否出现了弹出框,封装成以下方法:
      
  protected boolean alertExists(int seconds) {  

      long start = System.currentTimeMillis();  

      while ((System.currentTimeMillis() - start) < seconds * 1000) {  

          try {  

              driver.switchTo().alert();  

              return true;  

          } catch (NoAlertPresentException ne) {  

              System.out.println("not find alert!");  

          } catch (Exception e) {   

              throw new RuntimeException(e.getMessage());  

          }  

      }  

      return false;  

  }
 
 
2、页面跳转,弹出窗口

     //得到当前窗口的句柄

     String currentWindow = driver.getWindowHandle();

     //得到所有窗口的句柄

     Set<String> handles = driver.getWindowHandles();

     Iterator<String> it = handles.iterator();

     while(it.hasNext()){

     if(currentWindow == it.next())  continue;

     WebDriver  window = driver.switchTo().window(it.next());  //获得新窗口,新的webDriver实例。

     System.out.println("title,url = "+window.getTitle()+","+window.getCurrentUrl());

     }

 

   另外,还有的iframe 之间转换方法 
  driver.switchTo().defaultContent();
  切换到某个frame:
  driver.switchTo().frame("leftFrame");
  从一个frame切换到另一个frame:
  driver.switchTo().frame("mainFrame");
  切换到某个window:
   driver.switchTo().window("windowName");
 
3、遍历控件
      List<WebElement> elements= driver.findElements(By.linkText("开始学习"));

     elements.get(1).click();

     findElements()方法返回所有相同的WebElement的List,咱们直接访问某一个元素,也可以遍历操作,,,这种功能大家都不回拒绝

     遍历

      for (Iterator<WebElement> i = elements.iterator(); i.hasNext();) {   

         WebElement integerRef = i.next();

      }
 
4、执行JS
     Web driver对Java Script的调用是通过JavascriptExecutor来实现的,例如:
     JavascriptExecutor js = (JavascriptExecutor) driver;
     js.executeScript("(function(){inventoryGridMgr.setTableFieldValue('"+ inventoryId + "','" + fieldName + "','"
                + value + "');})()");
 
 
 
WebDriver dr = new ChromeDriver();
String js = "var user_input = document.getElementByIdx_x_x_x(\"passport_51_user\").title;return user_input;";
String title = (String)((JavascriptExecutor)dr).executeScript( js);
System.out.println(title);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: