2013-05-02 89 views
3

我想在Kif中截屏。我在kif项目的一个私有类中看到了here,这是可能的,但我很难将它转换为一个步骤。谁能帮忙?以Kif为屏幕截图

回答

2

这个搞乱了一会儿后,我已将此添加到我的KIFTestStep.m

+ (id)stepToTakeScreenShotwithName:(NSString *)name; 
{ 
    NSString *description = [NSString stringWithFormat:@"Take a screenshot saved by the name %@", name]; 

    return [self stepWithDescription:description executionBlock:^(KIFTestStep *step, NSError **error) { 

     NSString *outputPath = [NSString stringWithFormat:@"/Users/%@/ScreenShots", NSUserName()]; 

     NSArray *windows = [[UIApplication sharedApplication] windows]; 
     if (windows.count == 0) { 
      return KIFTestStepResultFailure; 
     } 

     UIGraphicsBeginImageContext([[windows objectAtIndex:0] bounds].size); 
     for (UIWindow *window in windows) { 
      [window.layer renderInContext:UIGraphicsGetCurrentContext()]; 
     } 
     UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 

     NSTimeInterval timeStamp = [[NSDate date] timeIntervalSince1970]; 
     NSNumber *timeStampObj = [NSNumber numberWithDouble: timeStamp]; 

     outputPath = [outputPath stringByExpandingTildeInPath]; 
     outputPath = [outputPath stringByAppendingPathComponent:[name stringByReplacingOccurrencesOfString:@"/" withString:@"_"]]; 
     outputPath = [outputPath stringByAppendingString:[timeStampObj stringValue]]; 
     outputPath = [outputPath stringByAppendingPathExtension:@"png"]; 
     [UIImagePNGRepresentation(image) writeToFile:outputPath atomically:YES]; 

     return KIFTestStepResultSuccess; 
    }]; 
} 
3

这在KIF 3.0.4添加。见here