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