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

来源:互联网 发布:java中replace函数 编辑:程序博客网 时间:2024/06/04 17:42


 

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);
0 0
原创粉丝点击