Bạn có thể thấy là việc login vào trong 1 trang web nhiều lần là 1 việc không tốt.
Vậy làm sao chúng ta có thể login vào trang web 1 lần còn các lần sau chỉ cần reuse lại cookies là được.
Get Cookies.
func (s *Selenium) GetCookie() {
conctRemote, err := s.getRemote()
if err != nil {
log.Error(err.Error())
}
defer conctRemote.Quit()
//conctRemote.SetPageLoadTimeout(5 * time.Minute)
//conctRemote.SetImplicitWaitTimeout(5 * time.Minute)
err = conctRemote.Get("https://member.lazada.vn/user/login")
if err != nil {
log.Error(err.Error())
}
// Get cookies
cookies, err := conctRemote.GetCookies()
if err != nil {
log.Fatalf("Failed to get cookies: %s", err)
}
// Save cookies to file
file, err := json.MarshalIndent(cookies, "", " ")
if err != nil {
log.Fatal(err)
}
err = os.WriteFile("cookies.json", file, 0644)
if err != nil {
log.Fatal(err)
}
// Take a screenshot.
screenshot, err := conctRemote.Screenshot()
if err != nil {
panic(err) // Replace with more robust error handling
}
// Save the screenshot to a file.
filename := fmt.Sprintf("screenshot_%v.png", time.Now().Unix())
if err := os.WriteFile(filename, screenshot, 0644); err != nil {
panic(err) // Replace with more robust error handling
}
}
Add Cookies to the browser of Selenium
func (s *Selenium) TestCookie() {
// Load cookies from file
data, err := os.ReadFile("cookies.json")
if err != nil {
log.Fatal(err)
}
var cookies []selenium.Cookie
err = json.Unmarshal(data, &cookies)
if err != nil {
log.Fatal(err)
}
conctRemote, err := s.getRemote()
if err != nil {
log.Error(err.Error())
}
defer conctRemote.Quit()
// Now you can navigate to a page that requires authentication without logging in again
if err := conctRemote.Get("https://lazada.vn"); err != nil {
log.Fatalf("Failed to load page: %s", err)
}
// Add cookies to WebDriver
for _, cookie := range cookies {
err = conctRemote.AddCookie(&cookie)
if err != nil {
log.Fatalf("Failed to add cookie: %s", err)
}
}
conctRemote.Refresh()
//time.Sleep(10 * time.Second)
// Take a screenshot.
screenshot, err := conctRemote.Screenshot()
if err != nil {
panic(err) // Replace with more robust error handling
}
// Save the screenshot to a file.
filename := fmt.Sprintf("screenshot_cookie_%v.png", time.Now().Unix())
if err := os.WriteFile(filename, screenshot, 0644); err != nil {
panic(err) // Replace with more robust error handling
}
}
ở đây mình có 2 lưu ý:
Bạn lấy cookie ở url or link nào thì bạn nên add cookie ở ngay trang ấy.
Thứ 2: Bạn add cookie sau khi đã load được web