我想在使用 Agouti 创建新的 WebDriver 时使用 session 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()
检索 session ID,但返回类型是总线接口(interface),结果是带有 *http.client
变量的 session 。
还有其他替代方法吗?只需检索 session ID。
最佳答案
page.Session().Bus 返回一个 *apiSession 类型来提取 session ID。使用 Indirect 可以帮助我们返回 *apiSession 指向的值,在这种情况下 page.Session().Bus 从那里我们可以提取 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]
关于selenium - 在 Golang 的 *agouti.webdriver 中检索 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45421439/