2

通過我的KIF測試打開輔助功能檢查器(顯然,它是KIF工作所必需的)。問題是,它的窗口閉塞控制着一些後續的UI測試需要點擊並且這些測試失敗。如何在iOS 9模擬器中關閉輔助功能檢查器?

我怎麼能拒絕的輔助檢查關時,我的KIF測試完成它,所以我的UI測試可以運行?

(從模擬器的設置應用關掉它「手動」是不是一個解決方案 - 我尋找的東西,我可以從代碼中調用,目標還是...?設置)

回答

1

它默認情況下未啓用。您必須手動打開它。

+0

你說得對。這是我的KIF測試將其打開,而不是將其關閉 - 請參閱上面的編輯。 –

1

我在Stew Gleadow's blog上看到了以下內容。

你只需要更改線路:

CFPreferencesSetValue(CFSTR("ApplicationAccessibilityEnabled"), kCFBooleanFalse, accessibilityDomain, kCFPreferencesAnyUser, kCFPreferencesAnyHost); 

變化kCFBooleanTruekCFBooleanFalse

+ (void)_enableAccessibilityInSimulator { 
    NSAutoreleasePool *autoreleasePool = [[NSAutoreleasePool alloc] init]; 
    NSString *appSupportLocation = @"/System/Library/PrivateFrameworks/AppSupport.framework/AppSupport"; 

    NSDictionary *environment = [[NSProcessInfo processInfo] environment]; 
    NSString *simulatorRoot = [environment objectForKey:@"IPHONE_SIMULATOR_ROOT"]; 
    if (simulatorRoot) { 
     appSupportLocation = [simulatorRoot stringByAppendingString:appSupportLocation]; 
    } 

    void *appSupportLibrary = dlopen([appSupportLocation fileSystemRepresentation], RTLD_LAZY); 

    CFStringRef (*copySharedResourcesPreferencesDomainForDomain)(CFStringRef domain) = dlsym(appSupportLibrary, "CPCopySharedResourcesPreferencesDomainForDomain"); 

    if (copySharedResourcesPreferencesDomainForDomain) { 
     CFStringRef accessibilityDomain = copySharedResourcesPreferencesDomainForDomain(CFSTR("com.apple.Accessibility")); 

     if (accessibilityDomain) { 
      CFPreferencesSetValue(CFSTR("ApplicationAccessibilityEnabled"), kCFBooleanFalse, accessibilityDomain, kCFPreferencesAnyUser, kCFPreferencesAnyHost); 
      CFRelease(accessibilityDomain); 
     } 
    } 

    [autoreleasePool drain]; 
}