在Golang的* agouti.webdriver中检索会话ID

时间:2017-07-31 16:54:06

标签: selenium go saucelabs ginkgo agouti

我想在使用Agouti创建新的WebDriver时使用会话ID将其传递给SauceLabs以进行状态更新。

使用的命令:

url := fmt.Sprintf("http://%s:%s@ondemand.saucelabs.com/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。

2 个答案:

答案 0 :(得分:0)

fmt.Println(fmt.Sprintf("%s", sessionId)[:32])感谢Gavin!

祝你好运!

答案 1 :(得分:0)

page.Session()。总线返回类型* apiSession以提取会话ID。使用Indirect可以帮助我们返回* 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]