2017-07-31 86 views
1

我想在使用Agouti創建新的WebDriver時使用會話ID將它傳遞給SauceLabs以進行狀態更新。在* agouti.webdriver中爲Golang檢索會話ID

使用的命令:

url := fmt.Sprintf("http://%s:%[email protected]/wd/hub", username, accesskey) 
page,err :=agouti.NewPage(url, options) 
Expect(err).NotTo(HaveOccurred()) 
page.Navigate(`https://qiita.com/login`) 

我試圖從page.Session()檢索會話ID,但返回類型是總線接口和結果是會議與*http.client變量。

是否有其他替代方案?只檢索會話ID。

+0

你是說你不知道如何解析Output來獲得期望的輸出嗎? – JeffC

+0

是的,我無法解析輸出或任何其他替代方法來檢索會話ID。 – Anvesh

+0

只需將'sessionId'轉換爲一個字符串,按空格拆分,然後取第一部分。 – JeffC

回答

0

fmt.Println(fmt.Sprintf("%s", sessionId)[:32])感謝加文!

祝你好運!

+0

OP的「Desired Output」是一個_without_'0x1707a60'。 – msanford

+0

Ya我得到了想要的輸出和輸出困惑,只是更新了@msanford – James

+0

也不正確,這隻打印前10個字符; OP想截斷_final_ 10個字符 – msanford

0

page.Session()。Bus返回一個類型* apiSession來提取會話ID。使用間接可以幫助我們返回* apiSession在這種情況下指向的值page.Session()。從那裏我們可以提取sessionID的值。

sessionBus := reflect.ValueOf(page.Session().Bus) 
sessionURL := reflect.Indirect(sessionBus) 
sessionField := sessionURL.FieldByName(`SessionURL`) 
sessionString := sessionField.String() 
sessionSplit := strings.SplitN(sessionString, "/", 7) 
sessionID := sessionSplit[len(sessionSplit)-1]