Selenium2關鍵話題:彈出框、頁面跳轉、遍歷相同控件、執行JS


 

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 driverJava 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);
發佈了12 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章