Получить идентификатор сеанса в *agouti.webdriver для Golang

Я хочу использовать идентификатор сеанса при создании нового WebDriver с Agouti, чтобы передать его в 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() но возвращаемый тип - это интерфейс шины, а результат - сессия с *http.client переменная.

Есть ли какая-либо другая альтернатива этому?, чтобы просто получить идентификатор сессии.

2 ответа

Page.Session().Bus возвращает тип *apiSession для извлечения идентификатора сеанса. Использование Indirect может помочь нам вернуть значение, на которое указывает *apiSession в этом случае page.Session(). Шина, от которой мы можем извлечь session ID.

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]

fmt.Println(fmt.Sprintf("%s", sessionId)[:32]) спасибо Гэвину!

Удачи!

Другие вопросы по тегам