设为首页 收藏本站
查看: 1308|回复: 0

[经验分享] Selenium应用代码(常见封装的方法一)

[复制链接]

尚未签到

发表于 2017-3-2 11:12:46 | 显示全部楼层 |阅读模式
  常见封装的方法:输入、点击、判断元素是否存在、根据句柄切换窗口、根据title切换窗口、滚动窗口、截图
  import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.Set;
  import javax.imageio.ImageIO;
  import org.apache.commons.io.FileUtils;
import org.eclipse.jetty.util.thread.Timeout;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.NoSuchWindowException;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.Point;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
  import Study.Day02.TestTabnumDetail;
  public class CommonClass {
//封装元素输入的方法
public static int t = 1;
static String dir="F:\\Users\\Wangtest\\screenshots\\dianzhang";
public static void  sendKeys(WebDriver driver,By by, String value){
  driver.findElement(by).sendKeys(value);
  }
  
  //封装元素点击的方法
  public static void click(WebDriver driver,By by){
  driver.findElement(by).click();
  }

  
   //封装判断元素是否存在的方法
  public boolean doesWebElementExist(WebDriver driver,By by){

  try {
  driver.findElement(by);
return false;
} catch (Exception e) {
// TODO: handle exception
return true;
}
  }
  
//封装根据句柄切换窗口的方法
  public String getWindowHandle(WebDriver driver){
  String currentWindow = driver.getWindowHandle();
  return currentWindow;
  }

      public static void SwitchNewwindow(WebDriver driver){
    //得到当前句柄
  String currentWindow = driver.getWindowHandle();
  //得到所有窗口的句柄
  Set<String> handles = driver.getWindowHandles();
  //排除当前窗口的句柄,则剩下是新窗口
  Iterator<String> it = handles.iterator();
  while(it.hasNext()){
  if(currentWindow == it.next())  continue;
  driver.switchTo().window(it.next());      
  }

}
      
    //封装通过title切换窗口
      public boolean switchToWindow(WebDriver driver,String windowTitle){  
        boolean flag = false;  
        try {  
             String currentHandle = driver.getWindowHandle();  
             Set<String> handles = driver.getWindowHandles();  
             for (String s : handles) {  
                if (s.equals(currentHandle))  
                  continue;  
                else {  
                  driver.switchTo().window(s);  
                  if (driver.getTitle().contains(windowTitle)) {  
                  flag = true;  
                  System.out.println("Switch to window: "   + windowTitle + " successfully!");  
                  break;  }
                  else  
                  continue;  
                }  
             }  
        } catch (NoSuchWindowException e) {  
           System.out.printf("Window:" + windowTitle+ " cound not found!", e.fillInStackTrace());  
         flag = false;  
        }  
        return flag;  
    }
      
      //将滚动条滚到适合的位置  
      public static void setScroll(WebDriver driver,int height){  
        try {
        
//            String setscroll = "document.documentElement.scrollTop=" + height;  
        String setscroll = "document.body.scrollTop=" + height;  
            JavascriptExecutor jse=(JavascriptExecutor) driver;  
            jse.executeScript(setscroll);
            
        } catch (Exception e) {  
        System.out.println("Fail to set the scroll.");  
   }            
}
//      public void TakeScreenShot(WebDriver driver,WebElement element) throws IOException  {
//File screen = ((TakesScreenshot) ]this.driver).getScreenshotAs(OutputType.FILE);
//
//Point p = element.getLocation();
//
//int width = element.getSize().getWidth();
//        int height = element.getSize().getHeight();
//
//Rectangle rect = new Rectangle(width, height);
//
//BufferedImage img = null;
//
//img = ImageIO.read(screen);
//
//BufferedImage dest = img.getSubimage(p.getX(), p.getY(), rect.width,   
//                                 rect.height);
//
//ImageIO.write(dest, "png", screen);
//
//File f = null;
//
//f = new File(dir+getDateTime()+"_"+t+".jpg");
//
//FileUtils.copyFile(screen, f);
//
//}

//获取当前时间
    public static String getDateTime(){
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd_HHmmss");
        return df.format(new Date());
    }
  //封装截图的方法
    public static void ScreenShot(WebDriver driver){
        File screenShot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        try {
            FileUtils.copyFile(screenShot, new File(dir+getDateTime()+"_"+t+".jpg"));
            ++t;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
      
  }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-349240-1-1.html 上篇帖子: 服务器端开发技术 下篇帖子: (转)Spring MVC中处理静态资源的多种方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表