zoukankan      html  css  js  c++  java
  • Appium 命令使用说明

    Appium 命令与帮助


    下载地址:https://github.com/appium/appium-desktop/releases/

    Appium -h

    [root@BenLam-vm_0 ~]# appium -help
    [Appium] Welcome to Appium v2.0.1
    usage: /home/BenLam/node_modules/appium/build/lib/main.js
           [-h] [-v] [--shell] [--reboot] [--ipa IPA] [-a ADDRESS] [-p PORT]
           [-ca CALLBACKADDRESS] [-cp CALLBACKPORT] [-bp BOOTSTRAPPORT]
           [-r BACKENDRETRIES] [--session-override] [-l] [-g LOG]
           [--log-level {info,info:debug,info:info,info:warn,info:error,warn,warn:debug,warn:info,warn:warn,warn:error,error,error:debug,error:info,error:warn,error:error,debug,debug:debug,debug:info,debug:warn,debug:error}]
           [--log-timestamp] [--local-timezone] [--log-no-colors] [-G WEBHOOK]
           [--safari] [--default-device] [--force-iphone] [--force-ipad]
           [--tracetemplate AUTOMATIONTRACETEMPLATEPATH]
           [--instruments INSTRUMENTSPATH] [--nodeconfig NODECONFIG]
           [-ra ROBOTADDRESS] [-rp ROBOTPORT] [--selendroid-port SELENDROIDPORT]
           [--chromedriver-port CHROMEDRIVERPORT]
           [--chromedriver-executable CHROMEDRIVEREXECUTABLE] [--show-config]
           [--no-perms-check] [--strict-caps] [--isolate-sim-device]
           [--tmp TMPDIR] [--trace-dir TRACEDIR] [--debug-log-spacing]
           [--suppress-adb-kill-server] [--async-trace]
           [--webkit-debug-proxy-port WEBKITDEBUGPROXYPORT]
           [--webdriveragent-port WDALOCALPORT] [-dc DEFAULTCAPABILITIES]
           [--command-timeout DEFAULTCOMMANDTIMEOUT] [-k]
           [--platform-name PLATFORMNAME] [--platform-version PLATFORMVERSION]
           [--automation-name AUTOMATIONNAME] [--device-name DEVICENAME]
           [--browser-name BROWSERNAME] [--app APP] [-lt LAUNCHTIMEOUT]
           [--language LANGUAGE] [--locale LOCALE] [-U UDID]
           [--orientation ORIENTATION] [--no-reset] [--full-reset]
           [--app-pkg APPPACKAGE] [--app-activity APPACTIVITY]
           [--app-wait-package APPWAITPACKAGE]
           [--app-wait-activity APPWAITACTIVITY]
           [--device-ready-timeout DEVICEREADYTIMEOUT]
           [--android-coverage ANDROIDCOVERAGE] [--avd AVD] [--avd-args AVDARGS]
           [--use-keystore] [--keystore-path KEYSTOREPATH]
           [--keystore-password KEYSTOREPASSWORD] [--key-alias KEYALIAS]
           [--key-password KEYPASSWORD] [--intent-action INTENTACTION]
           [--intent-category INTENTCATEGORY] [--intent-flags INTENTFLAGS]
           [--intent-args OPTIONALINTENTARGUMENTS] [--dont-stop-app-on-reset]
           [--calendar-format CALENDARFORMAT] [--native-instruments-lib]
           [--keep-keychains] [--localizable-strings-dir LOCALIZABLESTRINGSDIR]
           [--show-ios-log] [--enable-heapdump] [--relaxed-security]
    [root@BenLam-vm_0 ~]# 
    

    Appium 说明(已更新至1.11.2版)

    1. 通用


    OptionDescriptionValue
    automationName 使用哪个自动化引擎 Appium(默认)或Selendroid或者UiAutomator2或者Espresso对于Android或XCUITestiOS或者YouiEngine使用You.i引擎构建的应用程序
    platformName 使用哪个移动操作系统平台 iOS,Android或FirefoxOS
    platformVersion 移动操作系统版本 例如7.1,4.4
    deviceName 使用的移动设备或模拟器的种类 iPhone Simulator,iPad Simulator,iPhone Retina 4-inch,Android Emulator,Galaxy S4,等....在iOS上,这应该是与仪器返回的有效设备之一instruments -s devices。在Android上,这个功能目前被忽略,尽管它仍然是必需的。
    app 一个或一个文件的绝对本地路径或远程http URL ,或者包含其中的一个。Appium将首先尝试在适当的设备上安装这个应用程序二进制文件。请注意,如果您指定和功能(请参阅下文),则此功能对于Android不是必需的。与...不兼容。.ipa.apk.zipappPackageappActivitybrowserName /abs/path/to/my.apk 要么http://myapp.com/app.ipa
    browserName 移动网页浏览器的名称自动化。应该是一个空字符串,而不是自动化应用程序。 适用于iOS的“Safari”,适用于Android的“Chrome”,“Chromium”或“浏览器”
    newCommandTimeout 在假定客户端退出并结束会话之前,Appium将等待来自客户端的新命令(以秒为单位) 例如 60
    language (Sim / Emu-only)为模拟器/仿真器设置的语言 例如 fr
    locale (Sim / Emu-only)为模拟器/仿真器设置的语言环境 例如 fr_CA
    udid 连接的物理设备的唯一设备标识符 例如 1ae203187fc012g
    orientation (Sim / Emu-only)从某个方向开始 LANDSCAPE 要么 PORTRAIT
    autoWebview 直接进入Webview上下文。默认false true, false
    noReset 在此会话之前不要重置应用程序状态。在这里看到更多的细节 true, false
    fullReset 执行完整的重置。在这里看到更多的细节 true, false
    eventTimings 启用或禁用各种Appium内部事件的时间报告(例如,每个命令的开始和结束等)。默认为false。启用,使用true。然后将这些时间作为events回应查询当前会话的财产报告。请参阅事件时间文档了解此响应的结构。 例如, true
    enablePerformanceLogging (仅限Web和webview)启用Chromedriver(在Android上)或Safari(在iOS上)性能记录(默认false) true, false

    2. Android支持选项

    这些功能仅适用于基于Android的驱动程序(例如:UiAutomator2)。


    OptionDescriptionValue
    appActivity 要从包中启动的Android活动的活动名称。这往往需要在一个.(例如,.MainActivity而不是MainActivity) MainActivity, .Settings
    appPackage 你想运行的Android应用程序的Java包 com.example.android.myApp, com.android.settings
    appWaitActivity 活动名称/名称,逗号分隔,您想要等待的Android活动 SplashActivity,SplashActivity,OtherActivity,.SplashActivity
    appWaitPackage 您想等待的Android应用程序的Java包 com.example.android.myApp, com.android.settings
    appWaitDuration 用于等待appWaitActivity启动的超时(以毫秒为单位20000)(默认) 30000
    deviceReadyTimeout 在等待设备准备就绪的几秒钟内超时 5
    androidCoverage 完全合格的仪器类。通过-w在adb shell中,仪器-e覆盖率为true -w com.my.Pkg/com.my.Pkg.instrumentation.MyInstrumentation
    androidCoverageEndIntent 由您自己执行的广播操作,用于将覆盖转储到文件系统。传递到-a在adb外壳广播-a com.example.pkg.END_EMMA
    androidDeviceReadyTimeout 用于等待设备在启动后准备就绪的秒数 例如, 30
    androidInstallTimeout 用于等待apk安装到设备的超时(以毫秒为单位)。默认为90000 例如, 90000
    androidInstallPath 安装前将在其中安装apk的设备上的目录名称。默认为/data/local/tmp 例如 /sdcard/Downloads/
    adbPort 用于连接到ADB服务器的端口(默认5037) 5037
    remoteAdbHost 可选的远程ADB服务器主机 例如:192.168.0.101
    androidDeviceSocket Devtools套接字名称。只有当测试的应用程序是Chromium嵌入式浏览器时才需要。套接字由浏览器打开,并且Chromedriver作为devtools客户端连接到它。 例如, chrome_devtools_remote
    avd avd的名称发射 例如, api19
    avdLaunchTimeout avd启动并连接到ADB需要多长时间(默认值120000) 300000
    avdReadyTimeout avd完成启动动画需要多长时间(默认120000) 300000
    avdArgs 启动avd时使用的其他仿真器参数 例如, -netfast
    useKeystore 使用自定义密钥库来签署apks,默认 false true 要么 false
    keystorePath 自定义密钥库路径,默认〜/ .android / debug.keystore 例如, /path/to.keystore
    keystorePassword 自定义密钥库的密码 例如, foo
    keyAlias 密钥的别名 例如, androiddebugkey
    keyPassword 密钥的密钥 例如, foo
    chromedriverExecutable webdriver可执行文件的绝对本地路径(如果Chromium embedder提供了自己的webdriver,则应该使用它来代替与Appium捆绑在一起的原始chromedriver) /abs/path/to/webdriver
    autoWebviewTimeout 等待Webview上下文激活的时间(以毫秒为单位)。默认为2000 例如 4
    intentAction 意图操作将用于启动活动(默认android.intent.action.MAIN) 例如android.intent.action.MAIN,android.intent.action.VIEW
    intentCategory 意图类别,将用于启动活动(默认android.intent.category.LAUNCHER) 例如android.intent.category.LAUNCHER,android.intent.category.APP_CONTACTS
    intentFlags 将用于启动活动的标志(默认0x10200000) 例如 0x10200000
    optionalIntentArguments 将用于启动活动的其他意图参数。请参阅意向参数 例如--esn <EXTRA_KEY>,--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>等等。
    dontStopAppOnReset 在使用adb启动应用程序之前,不要停止被测试的应用程序的进程。如果被测试的应用程序是由另一个定位应用程序创建的,那么将其设置为false将允许在使用adb的测试应用程序启动过程中定位应用程序的过程仍然存在。换句话说,在dontStopAppOnReset设置的时候true,我们不会-S在adb shell am start通话中包含标志。有了这个能力被省略或设置为false,我们包括-S标志。默认false true 要么 false
    unicodeKeyboard 启用Unicode输入,默认 false true 要么 false
    resetKeyboard 使用unicodeKeyboard功能运行Unicode测试后,将键盘重置为原始状态。如果单独使用,则忽略。默认false true 要么 false
    noSign 使用调试键跳过检查和签名应用程序,只能使用UiAutomator,而不能使用selendroid,默认false true 要么 false
    ignoreUnimportantViews 调用setCompressedLayoutHierarchy()uiautomator函数。此功能可以加快测试执行速度,因为辅助功能命令将更快地忽略某些元素。被忽略的元素是不可能找到的,这就是为什么这个功能也被实现为可切换的设置以及功能。默认为false true 要么 false
    disableAndroidWatchers 禁用观察应用程序没有响应和应用程序崩溃的android观察者,这将减少Android设备/模拟器上的CPU使用率。这个功能只能用于UiAutomator,而不能用于selendroid,默认false true 要么 false
    chromeOptions 允许ChromeDriver传递chromeOptions功能。有关更多信息,请参阅chromeOptions chromeOptions: {args: ['--disable-popup-blocking']}
    recreateChromeDriverSessions 在移至非ChromeDriver网页浏览的情况下杀死ChromeDriver会话。默认为false true 要么 false
    nativeWebScreenshot 在Web上下文中,使用本地(adb)方法截取屏幕截图,而不是代理ChromeDriver。默认为false true 要么 false
    androidScreenshotPath 将要放置屏幕截图的设备上的目录名称。默认为/data/local/tmp 例如 /sdcard/screenshots/
    autoGrantPermissions 让Appium自动确定您的应用程序需要哪些权限,并在安装时将其授予应用程序。默认为false true 要么 false
    networkSpeed 设置网络速度模拟。指定最大的网络上传和下载速度。默认为full ['full','gsm', 'edge', 'hscsd', 'gprs', 'umts', 'hsdpa', 'lte', 'evdo']检查-netspeed选项有关avds速度仿真的更多信息
    gpsEnabled 在开始会话之前,切换模拟器的gps位置提供程序。默认情况下,仿真器将根据设置的方式启用或不启用此选项。 true 要么 false
    isHeadless true当不需要显示设备显示时,将此功能设置为无运行模拟器。false是默认值。isHeadless也支持iOS,请检查XCUITest的具体功能。 例如, true

    3. iOS支持选项

    这些功能仅适用于XCUITest驱动程序和过时的UIAutomation驱动程序。


    OptionDescriptionValue
    calendarFormat (仅限SIM)为iOS模拟器设置的日历格式 例如 gregorian
    bundleId 测试中的应用程序的捆绑ID。用于在真实设备上启动应用程序或在测试启动期间使用其他需要包ID的大写字母。要使用软件包ID在真实设备上运行测试,可以省略“应用”功能,但必须提供“udid”。 例如 io.appium.TestApp
    udid 连接的物理设备的唯一设备标识符 例如 1ae203187fc012g
    launchTimeout 假设它挂起和失败会话之前以毫秒为单位等待仪器的时间 例如 20000
    locationServicesEnabled (仅限SIM)强制定位服务处于打开或关闭状态。默认是保持当前的模拟设置。 true 要么 false
    locationServicesAuthorized (仅限SIM)通过plist将位置服务设置为授权或未授权,以便位置服务警报不会弹出。默认是保持当前的模拟设置。请注意,如果您使用此设置,您还必须使用该bundleId功能发送您的应用的捆绑ID。 true 要么 false
    autoAcceptAlerts 如果弹出,则自动接受所有iOS警报。这包括隐私访问权限提醒(例如,位置,联系人,照片)。默认是false。不适用于XCUITest基于测试。 true 要么 false
    autoDismissAlerts 如果弹出,则自动关闭所有iOS警报。这包括隐私访问权限提醒(例如,位置,联系人,照片)。默认是false。不适用于XCUITest基于测试。 true 要么 false
    nativeInstrumentsLib 使用本机intruments lib(即禁用仪器,无延迟)。 true 要么 false
    nativeWebTap (仅限SIM)在Safari中启用“真实”,非基于JavaScript的网页浏览。默认:false。警告:根据视口的大小/比例,这可能无法准确地点击一个元素 true 要么 false
    safariInitialUrl (仅限SIM)(> = 8.1)初始Safari浏览器网址,默认为本地欢迎页面 例如 https://www.github.com
    safariAllowPopups (仅限Sim)允许JavaScript在Safari中打开新窗口。默认保持当前的模拟设置 true 要么 false
    safariIgnoreFraudWarning (仅限SIM)防止Safari显示欺诈网站警告。默认保持当前的模拟设置。 true 要么 false
    safariOpenLinksInBackground (仅限SIM)Safari是否应允许在新窗口中打开链接。默认保持当前的模拟设置。 true 要么 false
    keepKeyChains (Sim-only)当appium会话开始/结束时是否保留钥匙串(Library / Keychains) true 要么 false
    localizableStringsDir 在哪里寻找可本地化的字符串。默认en.lproj en.lproj
    processArguments 使用工具传递给AUT的参数 例如, -myflag
    interKeyDelay 输入时发送到元素的击键之间的延迟,以毫秒为单位。 例如, 100
    showIOSLog 是否显示从appium日志中的设备捕获的任何日志。默认false true 要么 false
    sendKeyStrategy 用于将测试类型输入测试领域的策略。模拟器默认:oneByOne。实际设备默认值:grouped oneByOne,grouped或者setValue
    screenshotWaitTimeout 以秒为单位的最大超时等待生成屏幕截图。默认:10 例如, 5
    waitForAppScript ios自动化脚本用于确定应用程序是否已启动,默认情况下系统等待页面源不为空。结果必须是布尔值 例如true;,target.elements().length > 0;,$.delay(5000); true;
    webviewConnectRetries 向远程调试器发送连接消息以获取webview的次数。默认:8 例如, 12
    appName 被测应用程序的显示名称。用于在iOS 9+中自动化后台应用程序。 例如, UICatalog
    customSSLCert (仅限Sim / Emu)向模拟器添加SSL证书。 例如
    -----BEGIN CERTIFICATE-----MIIFWjCCBEKg...    
    -----END CERTIFICATE-----    
    webkitResponseTimeout (仅限实际设备)设置时间(以毫秒为单位)以等待Safari会话中WebKit的响应。默认为5000 例如, 10000

    参数说明

    [root@BenLam-vm_0 ~]# appium show_help
    
    参数默认说明用法
    --shell null 进入 REPL 模式  
    --localizable-strings-dir en.lproj IOS only: 定位 .strings所在目录的相对路径 --localizable-strings-dir en.lproj
    --app null iOS: 基于模拟器编译的 app 的绝对路径或者设备目标的 bundle_id; Android: apk 文件的绝对路径--app /abs/path/to/my.app  
    --ipa null (IOS-only) .ipa 文件的绝对路径 --ipa /abs/path/to/my.ipa
    -U, --udid null 连接物理设备的唯一设备标识符 --udid 1adsf-sdfas-asdf-123sdf
    -a, --address 0.0.0.0 监听的 ip 地址 --address 0.0.0.0
    -p, --port 4723 监听的端口 --port 4723
    -ca, --callback-address null 回调IP地址 (默认: 相同的IP地址) --callback-address 127.0.0.1
    -cp, --callback-port null 回调端口号 (默认: 相同的端口号) --callback-port 4723
    -bp, --bootstrap-port 4724 (Android-only) 连接设备的端口号 --bootstrap-port 4724
    -k, --keep-artifacts false 弃用,无效。trace信息现在保留tmp目录下,每次运行前会清除该目录中的信息。 也可以参考 –trace-dir 。  
    -r, --backend-retries 3 (iOS-only) 遇到 crash 或者 超时,Instrument 重新启动的次数。 --backend-retries 3
    --session-override FALSE 允许 session 被覆盖 (冲突的话)  
    --full-reset FALSE (iOS) 删除整个模拟器目录。 (Android) 通过卸载应用(而不是清除数据)重置应用状态。在 Android 上,session 完成后也会删除应用。  
    --no-reset FALSE session 之间不重置应用状态 (iOS: 不删除应用的 plist 文件; Android: 在创建一个新的 session 前不删除应用。)  
    -l, --pre-launch false 在第一个 session 前,预启动应用 (iOS 需要 –app 参数,Android 需要 –app-pkg 和 –app-activity)  
    -lt, --launch-timeout 90000 (iOS-only) 等待 Instruments 启动的时间  
    -g, --log null 将日志输出到指定文件 --log /path/to/appium.log
    --log-level debug 日志级别; 默认 (console[:file]): debug[:debug] --log-level debug
    --log-timestamp FALSE 在终端输出里显示时间戳  
    --local-timezone FALSE 使用本地时间戳  
    --log-no-colors FALSE 不在终端输出中显示颜色  
    -G, --webhook null 同时发送日志到 HTTP 监听器 --webhook localhost:9876
    --native-instruments-lib FALSE (IOS-only) iOS 内建了一个怪异的不可能避免的延迟。我们在 Appium 里修复了它。如果你想用原来的,你可以使用这个参数。  
    --app-pkg null (Android-only) 你要运行的apk的java包。 (例如, com.example.android.myApp) --app-pkg com.example.android.myApp
    --app-activity null (Android-only) 打开应用时,启动的 Activity 的名字(比如, MainActivity) --app-activity MainActivity
    --app-wait-package FALSE (Android-only) 你想等待的 Activity 的包名。(比如, com.example.android.myApp) --app-wait-package com.example.android.myApp
    --app-wait-activity FALSE (Android-only) 你想等待的 Activity 名字(比如, SplashActivity) --app-wait-activity SplashActivity
    --android-coverage FALSE (Android-only) 完全符合条件的 instrumentation 类。 作为命令 adb shell am instrument -e coverage true -w 的 -w 的参数 --android-coverage com.my.Pkg/com.my.Pkg.instrumentation.MyInstrumentation
    --avd null (Android-only) 要启动的 avd 的名字  
    --avd-args null (Android-only) 添加额外的参数给要启动avd --avd-args -no-snapshot-load
    --device-ready-timeout 5 (Android-only) 等待设备准备好的时间,以秒为单位 --device-ready-timeout 5
    --safari FALSE (IOS-Only) 使用 Safari 应用  
    --device-name null 待使用的移动设备名字 --device-name iPhone Retina (4-inch), Android Emulator
    --platform-name null 移动平台的名称: iOS, Android, or FirefoxOS --platform-name iOS
    --platform-version null 移动平台的版本 --platform-version 7.1
    --automation-name null 自动化工具的名称: Appium or Selendroid --automation-name Appium
    --browser-name null 移动浏览器的名称: Safari or Chrome --browser-name Safari
    --default-device, -dd false (IOS-Simulator-only) 使用instruments自己启动的默认模拟器  
    --force-iphone FALSE (IOS-only) 无论应用要用什么模拟器,强制使用 iPhone 模拟器  
    --force-ipad FALSE (IOS-only) 无论应用要用什么模拟器,强制使用 iPad 模拟器  
    --language null iOS / Android 模拟器的语言 --language en
    --locale null Locale for the iOS simulator / Android Emulator --locale en_US
    --calendar-format null (IOS-only) iOS 模拟器的日历格式 --calendar-format gregorian
    --orientation null (IOS-only) 初始化请求时,使用 LANDSCAPE (横屏) 或者 PORTRAIT (竖屏) --orientation LANDSCAPE
    --tracetemplate null (IOS-only) 指定 Instruments 使用的 tracetemplate 文件 --tracetemplate /Users/me/Automation.tracetemplate
    --show-sim-log FALSE (IOS-only) 如果设置了, iOS 模拟器的日志会写到终端上来  
    --show-ios-log FALSE (IOS-only) 如果设置了, iOS 系统的日志会写到终端上来  
    --nodeconfig null 指定 JSON 格式的配置文件 ,用来在 selenium grid 里注册 appiumd --nodeconfig /abs/path/to/nodeconfig.json
    -ra, --robot-address 0.0.0.0 robot 的 ip 地址 --robot-address 0.0.0.0
    -rp, --robot-port -1 robot 的端口地址 --robot-port 4242
    --selendroid-port 8080 用来和 Selendroid 交互的本地端口 --selendroid-port 8080
    --chromedriver-port 9515 ChromeDriver运行的端口 --chromedriver-port 9515
    --chromedriver-executable null ChromeDriver 可执行文件的完整路径  
    --use-keystore FALSE (Android-only) 设置签名 apk 的 keystore  
    --keystore-path (Android-only) keystore 的路径    
    --keystore-password android (Android-only) keystore 的密码  
    --key-alias androiddebugkey (Android-only) Key 的别名  
    --key-password android (Android-only) Key 的密码  
    --show-config FALSE 打印 Appium 服务器的配置信息,然后退出  
    --no-perms-check FALSE 跳过Appium对是否可以读/写必要文件的检查  
    --command-timeout 60 默认所有会话的接收命令超时时间 (在超时时间内没有接收到新命令,自动关闭会话)。 会被新的超时时间覆盖  
    --keep-keychains FALSE (iOS) 当 Appium 启动或者关闭的时候,是否保留 keychains (Library/Keychains)  
    --strict-caps FALSE 如果所选设备是appium不承认的有效设备,会导致会话失败  
    --isolate-sim-device FALSE Xcode 6存在一个bug,那就是一些平台上如果其他模拟器设备先被删除时某个特定的模拟器只能在没有任何错误的情况下被建立。这个选项导致了Appium不得不删除除了正在使用设备以外其他所有的设备。请注意这是永久性删除,你可以使用simctl或xcode管理被Appium使用的设备类别。  
    --tmp null 可以被Appium用来管理临时文件的目录(绝对路径),比如存放需要移动的内置iOS应用程序。 默认的变量为 APPIUM_TMP_DIR ,在 *nix/Mac 为 /tmp 在windows上使用环境便令 TEMP 设定的目录。  
    --trace-dir null 用于保存iOS instruments trace的 appium 目录,是绝对路径, 默认为 /appium-instruments  
    --intent-action android.intent.action.MAIN (Android-only) 用于启动 activity 的intent action --intent-action android.intent.action.MAIN
    --intent-category android.intent.category.LAUNCHER (Android-only) 用于启动 activity 的intent category --intent-category android.intent.category.APP_CONTACTS
    --intent-flags 0x10200000 (Android-only) 启动 activity 的标志 --intent-flags 0x10200000
    --intent-args null (Android-only) 启动 activity 时附带额外的 intent 参数 --intent-args 0x10200000
    --suppress-adb-kill-server FALSE (Android-only) 如果被设定,阻止Appium杀掉adb实例。  
    - - - -
    作者:GI-JOE
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Servlet基本概念及其部署
    MSSQL数据库全库批量替换
    我的第一个GAE(google appengine)应用
    今天你有病了吗?
    [Microsoft][ODBC SQL Server Driver][DBNETLIB] 一般性网络错误
    Google appengine 上传输错用户名解决办法;
    查看畸形文件
    Session
    jq幻灯片2
    JS打开层/关闭层/移动层动画效果
  • 原文地址:https://www.cnblogs.com/BenLam/p/10441641.html
Copyright © 2011-2022 走看看