Appium 的故障排查

当你在使用过程中遇到了问题,先别急着到 github 上提交反馈,或者到 appium-discuss discussion group 提问。可以先试试在本文中能否找到解决的办法。

常见问题

如果你是通过 Appium.app 运行

如果你是通过 Appium 的源码运行

Android

Windows

IOS

center [myCustomView setAccessibilityEnabled:YES];

### 解决办法 1 NSLog 是一个宏且可以被定义的。例如: ```objectivec // You'll need to define TEST or TEST2 and then recompile.

#ifdef TEST #define NSLog(...) _BlackHoleTestLogger(VA_ARGS); #endif // TEST #ifdef TEST2 #define NSLog(...) _StdoutTestLogger(VA_ARGS); #endif // TEST2

void _BlackHoleTestLogger(NSString *format, ...) { // }

void _StdoutTestLogger(NSString *format, ...) { va_list argumentList; va_start(argumentList, format); NSMutableString * message = [[NSMutableString alloc] initWithFormat:format arguments:argumentList];

  printf(message);

  va_end(argumentList);
  [message release];

} ```

### 解决办法 2 手动去替换掉 NSLog 封装的底层功能。该方法被 Apple in a similar context. 所推荐 ```objectivec extern void _NSSetLogCStringFunction(void()(const char , unsigned, BOOL));

static void _GarbageFreeLogCString(const char *message, unsigned length, BOOL withSyslogBanner) { fprintf(stderr, "%s\n", message); }

int main (int argc, const char argv[]) { NSAutoreleasePool pool = [[NSAutoreleasePool alloc] init]; int exitCode;

 setbuf(stderr, NULL);

 _NSSetLogCStringFunction(_GarbageFreeLogCString);
 exitCode = WOApplicationMain(@"Application", argc, argv);
 [pool release];
 return exitCode;

} ```

Webview/Hybrid/Safari 应用的支持

到社区寻求帮助

如果上述步骤还没解决你的问题,那你可以通过以下方式获得帮助:

当你在使用 Appium 的过程中有任何问题,而且 Appium 提供的报错信息不够清晰的话,欢迎加入讨论组与大家进行讨论。提问时请附带上如下信息:

如果你确信你发现的是一个 bug,请直接到 issue tracker 去提交一个 issue 去描述 bug 的信息以及重现步骤。

已知问题

特定的错误

Action Error Resolution
Running ios test [INST STDERR] posix spawn failure; aborting launch 你的应用没有分别对应模拟器或者真机去编译对应版本.
Running mobile safari test error: Could not prepare mobile safari with version '7.1' 你可能需要再次运行授权的脚本以确保 iOS SDK 文件是可写状态。详情请查阅 running on OSX documentation

本文由 thanksdanny 翻译,由 lihuazhang 校验。