2017-07-31 63 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]