51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1766|回复: 1
打印 上一主题 下一主题

Sikuli元素异常处理(截图及打印日志)

[复制链接]
  • TA的每日心情
    无聊
    10 小时前
  • 签到天数: 528 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-1-9 15:33:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    Sikuli框架在出现异常时,没有做出一些好的处理,比如截图,打印日志,还有对程序的回收,我们可以通过java中的方法对Sikuli进行封装一下,实现这些功能,好了,看如下代码
    1. package com.sikuli;

    2. import java.awt.Dimension;
    3. import java.awt.Rectangle;
    4. import java.awt.Robot;
    5. import java.awt.Toolkit;
    6. import java.awt.image.BufferedImage;
    7. import java.io.File;
    8. import javax.imageio.ImageIO;
    9. import org.apache.log4j.LogManager;
    10. import org.apache.log4j.Logger;
    11. import org.apache.log4j.xml.DOMConfigurator;
    12. import org.sikuli.script.Screen;


    13. public class SikuliElWait {
    14.        
    15.        
    16.          /****************************************************************
    17.          * 对屏幕进行拍照
    18.          *
    19.          ****************************************************************/

    20.         public static void  snapShot(String path) throws Exception {
    21.                
    22.                 String imaFormat ="png";
    23.                 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();         
    24.                 String fName = path +"eImage/";
    25.                
    26.                 BufferedImage screenshot = (new Robot()).createScreenCapture(new
    27.                                      Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));
    28.                  
    29.                  
    30.                 File folder =new File(fName);
    31.                 if  (!folder .exists()  && !folder .isDirectory()) {
    32.                                      folder.mkdir();
    33.                          }
    34.                  
    35.                 String name=fName+"err."+imaFormat;
    36.                 File f = new File(name);
    37.                  
    38.                 //将screenshot对象写入图像文件
    39.                 ImageIO.write(screenshot, imaFormat, f);

    40.         }

    41.          /****************************************************************
    42.          * 等待元素出现,如果元素有异常,进行当前页面截图并关闭应用程序
    43.          *
    44.          ****************************************************************/       
    45.        
    46.         public static  void waitEl(Screen scr,String className,String path,String ima,double time,Process app) throws Exception{
    47.                 Logger log = LogManager.getLogger(className);
    48.                 DOMConfigurator.configure("log4j.xml");
    49.                 try {
    50.                         scr.wait(path+ima, time);
    51.                         log.info("元素存在");
    52.                 } catch (Exception e) {                       
    53.                         SikuliElWait.snapShot(path);
    54.                         log.info("元素不存在");
    55.                         app.destroy();
    56.                         throw(e);
    57.                 }                               
    58.         }

    59. }
    复制代码


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 19:59 , Processed in 0.060979 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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