【Appium】appium通過(guò)日志分析服務(wù)端執(zhí)行過(guò)程-IOS端

本文日志為在IOS模擬器上進(jìn)行的測(cè)試

在appium服務(wù)端中漫仆,日志分為log.info和log.debug 一般每個(gè)文件夾下面都有l(wèi)ogger.js 該js中規(guī)定當(dāng)前l(fā)og格式诵肛。
info為基礎(chǔ)信息
debug可以看做為調(diào)試信息据悔。
本篇為初步分析创坞,后來(lái)對(duì)日志又進(jìn)行了更細(xì)致的斷點(diǎn)查找尔艇,待整理桨仿,如有錯(cuò)誤還請(qǐng)指出

假如日志前面打印出的[Appium][XUCITES]等,根據(jù)該名字可以查到日志來(lái)源于哪個(gè)文件夾下谎痢,[debug][MJSONWP]代表當(dāng)前是采用log.debug方式打印日志磕昼,且日志來(lái)源于appium-base-driver/mjsonwp的文件夾

第一部分 啟動(dòng)服務(wù)并創(chuàng)建sessionID

appium啟動(dòng):

[Appium] Welcome to Appium v1.7.2
[Appium] Appium REST http interface listener started on 0.0.0.0:4723

客戶端發(fā)送http請(qǐng)求,并傳遞配置參數(shù)

[HTTP] --> POST /wd/hub/session {"capabilities":{"alwaysMatch":{"platformName":"iOS"},"firstMatch":[{}]},"desiredCapabilities":{"platformVersion":"11.2","deviceName":"iPhone 6s","app":"/Users/用戶名/Documents/github/python-client-master/appium/TestApp/build/release-iphonesimulator/TestApp-iphonesimulator.app","platformName":"iOS"}}

[MJSONWP]為來(lái)自于appium服務(wù)端中封裝好的類庫(kù)appium-base-driver中mjsonwp文件夾下的mjsonwp.js节猿,一般用于server端的交互票从,包括處理HTTP的請(qǐng)求,session會(huì)話的創(chuàng)建刪除沐批。以下為創(chuàng)建Session

[debug] [MJSONWP] Calling AppiumDriver.createSession() with args: [{"platformVersion":"11.2","deviceName":"iPhone 6s","app":"/Users/用戶名/Documents/github/python-client-master/appium/TestApp/build/release-iphonesimulator/TestApp-iphonesimulator.app","platformName":"iOS"},null,{"alwaysMatch":{"platformName":"iOS"},"firstMatch":[{}]}]

[BaseDriver]日志來(lái)源于appium-base-driver/basedriver文件夾纫骑。
下面日志主要用于打印整個(gè)appium中的事件觸發(fā),所有的請(qǐng)求都會(huì)觸發(fā)各種類下的executeCommand函數(shù)九孩,而這些函數(shù)全部繼承driver.js中的WebDriver先馆,所以所有的請(qǐng)求都會(huì)打印出driver.js中的logHistory。

[debug] [BaseDriver] Event 'newSessionRequested' logged at 1516514435268 (14:00:35 GMT+0800 (CST))

[Appium]日志來(lái)源于lib文件夾下

[Appium] Merged W3C capabilities {"alwaysMatch":{"platformName":"iOS"},"firstMat... into desiredCapabilities object {"platformVersion":"11.2","deviceName":"iPhone ...
[Appium] Requested iOS support with version >= 10, using XCUITest driver instead of UIAutomation-based driver, since the latter is unsupported on iOS 10 and up.
[Appium] Creating new XCUITestDriver (v2.64.0) session
[Appium] Capabilities:
[Appium]   platformVersion: 11.2
[Appium]   deviceName: iPhone 6s
[Appium]   app: /Users/用戶名/Documents/github/python-client-master/appium/TestApp/build/release-iphonesimulator/TestApp-iphonesimulator.app
[Appium]   platformName: iOS

[BaseDriver]打印出當(dāng)前sessionId創(chuàng)建成功躺彬,來(lái)源于appium-base-driver/basedriver/session.js文件煤墙。

  • creatSession跳轉(zhuǎn)過(guò)程說(shuō)明:
    創(chuàng)建creatSession路線:mjsonwp.js-》appium.js中的createSession-》跳轉(zhuǎn)到XCUITEST中的createSession-》跳轉(zhuǎn)到appium-base-driver/basedriver/driver.js中的creatSession
  • 如何聯(lián)系起了XCUITest?
    通過(guò)appium.js中的curSessionDataForDriver(InnerDriver)宪拥,當(dāng)判斷出當(dāng)前是什么系統(tǒng)配置時(shí)仿野,InnerDriver此時(shí)已變成IOS或者Android的Driver
[BaseDriver] Session created with session id: 8790f1db-9627-41ce-a534-bc40159c7194

當(dāng)創(chuàng)建SessionID之后,此時(shí)進(jìn)入的是appium-xcuitest-driver類庫(kù)中她君。

[debug] [XCUITest] Current user: '用戶名'
[debug] [XCUITest] Current version of libimobiledevice: stable 1.2.0 (bottled), HEAD
[debug] [XCUITest] Xcode version set to '9.2' (tools v9.2.0.0.1.1510905681)
[debug] [XCUITest] iOS SDK Version set to '11.2'

來(lái)自于appium-base-driver/basedriver/driver.js中的logHistory函數(shù)

[debug] [BaseDriver] Event 'xcodeDetailsRetrieved' logged at 1516514436354 (14:00:36 GMT+0800 (CST))

[iOSSim]來(lái)自于appium-ios-simulator的日志脚作,接下來(lái)都是在IOS檢測(cè)模擬器,判斷APP缔刹,安裝APP的操作

[iOSSim] Constructing iOS simulator for Xcode version 9.2 with udid '2EF911A2-CA9C-4D28-96EB-3DBC8DF39FA5'
[XCUITest] Determining device to run tests on: udid: '2EF911A2-CA9C-4D28-96EB-3DBC8DF39FA5', real device: false
[BaseDriver] Using local app '/Users/用戶名/Documents/github/python-client-master/appium/TestApp/build/release-iphonesimulator/TestApp-iphonesimulator.app'
[debug] [BaseDriver] Event 'appConfigured' logged at 1516514436692 (14:00:36 GMT+0800 (CST))
[debug] [XCUITest] Checking whether app '/Users/用戶名/Documents/github/python-client-master/appium/TestApp/build/release-iphonesimulator/TestApp-iphonesimulator.app' is actually present on file system
[debug] [XCUITest] App is present
[debug] [iOS] Getting bundle ID from app '/Users/用戶名/Documents/github/python-client-master/appium/TestApp/build/release-iphonesimulator/TestApp-iphonesimulator.app': 'io.appium.TestApp'
[debug] [BaseDriver] Event 'resetStarted' logged at 1516514436695 (14:00:36 GMT+0800 (CST))
[XCUITest] Not scrubbing third party app in anticipation of uninstall
[debug] [BaseDriver] Event 'resetComplete' logged at 1516514436881 (14:00:36 GMT+0800 (CST))
[debug] [XCUITest] Starting log capture for iOS Simulator with udid '2EF911A2-CA9C-4D28-96EB-3DBC8DF39FA5', using 'xcrun simctl spawn 2EF911A2-CA9C-4D28-96EB-3DBC8DF39FA5 log stream --style compact'
[debug] [BaseDriver] Event 'logCaptureStarted' logged at 1516514437312 (14:00:37 GMT+0800 (CST))
[XCUITest] Setting up simulator
[debug] [iOS] No reason to set locale
[debug] [iOS] No iOS / app preferences to set
[debug] [iOSSim] Matched 1 Simulator cache item for cleanup: /Users/用戶名/Library/Developer/CoreSimulator/Devices/2EF911A2-CA9C-4D28-96EB-3DBC8DF39FA5/data/Library/Caches/com.apple.mobile.installd.staging
[debug] [iOSSim] Setting common Simulator preferences to {"ConnectHardwareKeyboard":false}
[debug] [iOSSim] Updated 2EF911A2-CA9C-4D28-96EB-3DBC8DF39FA5 Simulator preferences at '/Users/用戶名/Library/Preferences/com.apple.iphonesimulator.plist' with {"ConnectHardwareKeyboard":false}
[debug] [iOSSim] The count of running Simulator UI client instances is 1
[iOSSim] Both Simulator with UDID 2EF911A2-CA9C-4D28-96EB-3DBC8DF39FA5 and the UI client are currently running
[debug] [BaseDriver] Event 'simStarted' logged at 1516514437783 (14:00:37 GMT+0800 (CST))
[debug] [XCUITest] Reset requested. Removing app with id 'io.appium.TestApp' from the device
[debug] [XCUITest] Installing '/Users/用戶名/Documents/github/python-client-master/appium/TestApp/build/release-iphonesimulator/TestApp-iphonesimulator.app' on Simulator with UUID '2EF911A2-CA9C-4D28-96EB-3DBC8DF39FA5'...
[debug] [XCUITest] The app has been installed successfully.
[debug] [BaseDriver] Event 'appInstalled' logged at 1516514440337 (14:00:40 GMT+0800 (CST))

APP安裝成功之后開(kāi)始處理WDA

[XCUITest] Using WDA path: '/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent'
[XCUITest] Using WDA agent: '/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/WebDriverAgent.xcodeproj'
[debug] [XCUITest] No obsolete cached processes from previous WDA sessions listening on port 8100 have been found
[debug] [JSONWP Proxy] Proxying [GET /status] to [GET http://localhost:8100/status] with no body
[debug] [JSONWP Proxy] Got response with status 200: "{\n  \"value\" : {\n    \"state\" : \"success\",\n    \"os\" : {\n      \"name\" : \"iOS\",\n      \"version\" : \"11.2\",\n      \"sdkVersion\" : \"11.2\"\n    },\n    \"ios\" : {\n      \"simulatorVersion\" : \"11.2\",\n      \"ip\" : \"192.168.0.102\"\n    },\n    \"build\" : {\n      \"time\" : \"Jan 14 2018 23:25:10\"\n    }\n  },\n  \"sessionId\" : \"17DE3FB9-3196-4C9C-9D55-3BFFDD0C1DEB\",\n  \"status\" : 0\n}"
[XCUITest] Will reuse previously cached WDA instance at 'http://localhost:8100/'. Set the wdaLocalPort capability to a value different from 8100 if this is an undesired behavior.
[debug] [BaseDriver] Event 'wdaStartAttempted' logged at 1516514440422 (14:00:40 GMT+0800 (CST))
[XCUITest] Using provided WebdriverAgent at 'http://localhost:8100/'
[debug] [BaseDriver] Event 'wdaSessionAttempted' logged at 1516514440423 (14:00:40 GMT+0800 (CST))
[debug] [XCUITest] Sending createSession command to WDA

在XCUITest中開(kāi)啟WDA之后球涛,此時(shí)鏈接的request和response進(jìn)入了 appium-base-driver/lib/jsonwp-proxyproxy.js ,這個(gè)js主要是做S/D的鏈接校镐,即server服務(wù)端與devices設(shè)備的鏈接

[debug] [JSONWP Proxy] Proxying [GET /status] to [GET http://localhost:8100/status] with no body
[debug] [JSONWP Proxy] Got response with status 200: "{\n  \"value\" : {\n    \"state\" : \"success\",\n    \"os\" : {\n      \"name\" : \"iOS\",\n      \"version\" : \"11.2\",\n      \"sdkVersion\" : \"11.2\"\n    },\n    \"ios\" : {\n      \"simulatorVersion\" : \"11.2\",\n      \"ip\" : \"192.168.0.102\"\n    },\n    \"build\" : {\n      \"time\" : \"Jan 14 2018 23:25:10\"\n    }\n  },\n  \"sessionId\" : \"17DE3FB9-3196-4C9C-9D55-3BFFDD0C1DEB\",\n  \"status\" : 0\n}"
[debug] [JSONWP Proxy] Proxying [POST /session] to [POST http://localhost:8100/session] with body: {"desiredCapabilities":{"bundleId":"io.appium.TestApp","arguments":[],"environment":{},"shouldWaitForQuiescence":true,"shouldUseTestManagerForVisibilityDetection":false,"maxTypingFrequency":60,"shouldUseSingletonTestManager":true}}
[debug] [JSONWP Proxy] Got response with status 200: {"value":{"sessionId":"95403F32-CD9B-4A0E-AA89-4BE9C899FBBC","capabilities":{"device":"iphone","browserName":"TestApp","sdkVersion":"11.2","CFBundleIdentifier":"io.appium.TestApp"}},"sessionId":"95403F32-CD9B-4A0E-AA89-4BE9C899FBBC","status":0}
[debug] [BaseDriver] Event 'wdaSessionStarted' logged at 1516514443103 (14:00:43 GMT+0800 (CST))
[debug] [BaseDriver] Event 'wdaStarted' logged at 1516514443103 (14:00:43 GMT+0800 (CST))
[XCUITest] Skipping setting of the initial display orientation. Set the "orientation" capability to either "LANDSCAPE" or "PORTRAIT", if this is an undesired behavior.
[debug] [BaseDriver] Event 'orientationSet' logged at 1516514443103 (14:00:43 GMT+0800 (CST))

上邊WDA開(kāi)啟完畢亿扁,session創(chuàng)建成功,這個(gè)session的創(chuàng)建過(guò)程是從

mjsonwp.js(HTTP請(qǐng)求入口)-》appium.js中的createSession-》跳轉(zhuǎn)到XCUITEST中的createSession-》跳轉(zhuǎn)到appium-base-driver/basedriver/driver.js中的creatSession 創(chuàng)建成功之后回到了appium.js中將log打印鸟廓,最后回到了mjsonwp.js將response返回并通知从祝。

[Appium] New XCUITestDriver session created successfully, session 8790f1db-9627-41ce-a534-bc40159c7194 added to master session list
[debug] [BaseDriver] Event 'newSessionStarted' logged at 1516514443104 (14:00:43 GMT+0800 (CST))
[debug] [MJSONWP] Responding to client with driver.createSession() result: {"webStorageEnabled":false,"locationContextEnabled":false,"browserName":"","platform":"MAC","javascriptEnabled":true,"databaseEnabled":false,"takesScreenshot":true,"networkConnectionEnabled":false,"platformVersion":"11.2","deviceName":"iPhone 6s","app":"/Users/用戶名/Documents/github/python-client-master/appium/TestApp/build/release-iphonesimulator/TestApp-iphonesimulator.app","platformName":"iOS","udid":"2EF911A2-CA9C-4D28-96EB-3DBC8DF39FA5"}
[HTTP] <-- POST /wd/hub/session 200 7841 ms - 515

第二部分 發(fā)送操作請(qǐng)求執(zhí)行并返回

客戶端傳來(lái)請(qǐng)求獲取element,該請(qǐng)求進(jìn)入mjsonwp.js進(jìn)行處理引谜,通過(guò)executeCommand函數(shù)進(jìn)入appium.js 進(jìn)入appium-xcuitest-driver‘類庫(kù) 與JSONWP Proxy[appium-base-driver/lib/jsonwp/proxy.js]進(jìn)行協(xié)議交互 交互結(jié)果返回MJSONWP[appium-base-driver/lib/mjsonwp/mjsonwp.js]

[HTTP] --> POST /wd/hub/session/8790f1db-9627-41ce-a534-bc40159c7194/element {"using":"accessibility id","sessionId":"8790f1db-9627-41ce-a534-bc40159c7194","value":"TextField1"}
[debug] [MJSONWP] Calling AppiumDriver.findElement() with args: ["accessibility id","TextField1","8790f1db-9627-41ce-a534-bc40159c7194"]
[debug] [XCUITest] Executing command 'findElement'
[debug] [BaseDriver] Valid locator strategies for this request: xpath, id, name, class name, -ios predicate string, -ios class chain, accessibility id
[debug] [BaseDriver] Waiting up to 0 ms for condition
[debug] [JSONWP Proxy] Proxying [POST /element] to [POST http://localhost:8100/session/95403F32-CD9B-4A0E-AA89-4BE9C899FBBC/element] with body: {"using":"accessibility id","value":"TextField1"}
[debug] [JSONWP Proxy] Got response with status 200: {"value":{"ELEMENT":"A3063789-1A9E-4FA2-A645-F2E257F0BB30"},"sessionId":"95403F32-CD9B-4A0E-AA89-4BE9C899FBBC","status":0}
[debug] [MJSONWP] Responding to client with driver.findElement() result: {"ELEMENT":"A3063789-1A9E-4FA2-A645-F2E257F0BB30"}
[HTTP] <-- POST /wd/hub/session/8790f1db-9627-41ce-a534-bc40159c7194/element 200 83 ms - 122

客戶端再次傳來(lái)請(qǐng)求牍陌,以下都是重復(fù)請(qǐng)求與返回,直到客戶端傳來(lái)刪除會(huì)話员咽。
當(dāng)客戶端單個(gè)任務(wù)執(zhí)行完畢時(shí)毒涧,客戶端傳來(lái)刪除會(huì)話,通訊與其它沒(méi)有什么差別骏融。

[HTTP] --> DELETE /wd/hub/session/5469f63c-9b2b-4a3a-bbdb-fa26bd6315f9 {}
[debug] [MJSONWP] Calling AppiumDriver.deleteSession() with args: ["5469f63c-9b2b-4a3a-bbdb-fa26bd6315f9"]
[debug] [BaseDriver] Event 'quitSessionRequested' logged at 1516514455122 (14:00:55 GMT+0800 (CST))
[Appium] Removing session 5469f63c-9b2b-4a3a-bbdb-fa26bd6315f9 from our master session list
[debug] [JSONWP Proxy] Proxying [DELETE /session/5469f63c-9b2b-4a3a-bbdb-fa26bd6315f9] to [DELETE http://localhost:8100/session/E9944FDA-46DC-48B4-824B-A2C99D0B3BD2] with no body
[debug] [JSONWP Proxy] Got response with status 200: "{\n  \"value\" : {\n\n  },\n  \"sessionId\" : \"334D0B8A-6B9E-4BAA-9BDA-BFEE66EBB584\",\n  \"status\" : 0\n}"
[debug] [XCUITest] Not clearing log files. Use `clearSystemFiles` capability to turn on.
[debug] [iOSLog] Stopping iOS log capture
[debug] [BaseDriver] Event 'quitSessionFinished' logged at 1516514455352 (14:00:55 GMT+0800 (CST))
[debug] [MJSONWP] Received response: null
[debug] [MJSONWP] But deleting session, so not returning
[debug] [MJSONWP] Responding to client with driver.deleteSession() result: null
[HTTP] <-- DELETE /wd/hub/session/5469f63c-9b2b-4a3a-bbdb-fa26bd6315f9 200 231 ms - 76

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末链嘀,一起剝皮案震驚了整個(gè)濱河市萌狂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌怀泊,老刑警劉巖茫藏,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異霹琼,居然都是意外死亡务傲,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)枣申,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)售葡,“玉大人,你說(shuō)我怎么就攤上這事忠藤⌒铮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵模孩,是天一觀的道長(zhǎng)尖阔。 經(jīng)常有香客問(wèn)我,道長(zhǎng)榨咐,這世上最難降的妖魔是什么介却? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮块茁,結(jié)果婚禮上齿坷,老公的妹妹穿的比我還像新娘。我一直安慰自己数焊,他們只是感情好永淌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著昌跌,像睡著了一般仰禀。 火紅的嫁衣襯著肌膚如雪照雁。 梳的紋絲不亂的頭發(fā)上蚕愤,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音饺蚊,去河邊找鬼萍诱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛污呼,可吹牛的內(nèi)容都是我干的裕坊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼燕酷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼籍凝!你這毒婦竟也來(lái)了周瞎?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤饵蒂,失蹤者是張志新(化名)和其女友劉穎声诸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體退盯,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡彼乌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渊迁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慰照。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖琉朽,靈堂內(nèi)的尸體忽然破棺而出毒租,到底是詐尸還是另有隱情,我是刑警寧澤箱叁,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布蝌衔,位于F島的核電站,受9級(jí)特大地震影響蝌蹂,放射性物質(zhì)發(fā)生泄漏噩斟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一孤个、第九天 我趴在偏房一處隱蔽的房頂上張望剃允。 院中可真熱鬧,春花似錦齐鲤、人聲如沸斥废。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)牡肉。三九已至,卻和暖如春淆九,著一層夾襖步出監(jiān)牢的瞬間统锤,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工炭庙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饲窿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓焕蹄,卻偏偏與公主長(zhǎng)得像逾雄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 寫(xiě)在前面 本文檔主要是通過(guò)斷點(diǎn)跟蹤對(duì)于appium源碼鸦泳,從而記錄的appium服務(wù)端的啟動(dòng)過(guò)程银锻,如有錯(cuò)誤或者理解不...
    進(jìn)擊的程序茗閱讀 794評(píng)論 0 6
  • 前言 要想深入地掌握任何一門(mén)測(cè)試工具,對(duì)工具本身的架構(gòu)做鹰、原理徒仓、使用的協(xié)議及相關(guān)知識(shí)點(diǎn)都必須要有相關(guān)的了解和認(rèn)識(shí),才...
    讓技術(shù)更俗一點(diǎn)閱讀 4,740評(píng)論 3 55
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,823評(píng)論 6 342
  • 那位大名鼎鼎的臺(tái)灣羅慶導(dǎo)師誊垢,終于見(jiàn)到了!看上去普普通通掉弛,但眼神很堅(jiān)定,時(shí)常語(yǔ)出驚人喂走,又老是笑場(chǎng)殃饿,有時(shí)很?chē)?yán)肅認(rèn)真,大...
    美伊g閱讀 1,420評(píng)論 1 4
  • 心頭的那一抹紅芋肠,是我的最愛(ài)乎芳。兒子見(jiàn)到我 們時(shí),神采飛揚(yáng)地向我們炫耀帖池,他買(mǎi)了一個(gè)刻有某人名字的茶器奈惑,我們稱...
    沁墨m閱讀 104評(píng)論 0 0