Skip to content

NimTechnology

Trình bày các công nghệ CLOUD một cách dễ hiểu.

  • Kubernetes & Container
    • Docker
    • Kubernetes
      • Ingress
      • Pod
    • Helm Chart
    • OAuth2 Proxy
    • Isito-EnvoyFilter
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Vault
    • Longhorn – Storage
    • VictoriaMetrics
    • MetalLB
    • Kong Gateway
  • CI/CD
    • ArgoCD
    • ArgoWorkflows
    • Argo Events
    • Spinnaker
    • Jenkins
    • Harbor
    • TeamCity
    • Git
      • Bitbucket
  • Coding
    • DevSecOps
    • Terraform
      • GCP – Google Cloud
      • AWS – Amazon Web Service
      • Azure Cloud
    • Golang
    • Laravel
    • Python
    • Jquery & JavaScript
    • Selenium
  • Log, Monitor & Tracing
    • DataDog
    • Prometheus
    • Grafana
    • ELK
      • Kibana
      • Logstash
  • BareMetal
    • NextCloud
  • Toggle search form

[Selenium] Save cookies of any website that is running on Selenium.

Posted on February 18, 2024February 18, 2024 By nim No Comments on [Selenium] Save cookies of any website that is running on Selenium.

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.

Contents

Toggle
  • Get Cookies.
  • Add Cookies to the browser of Selenium

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

Golang, Selenium

Post navigation

Previous Post: [Kasm] Stream your workspace directly to your web browser…on any device and from any location.
Next Post: [Argo Event] Building webhook trigger for any action by argo-event.

More Related Articles

[Golang] Validate trong golang và echo framework. Golang
[Golang] Create Your Own CLI — With Golang Golang
[Golang] Mastering Slice Merging in Go: Utilize Append with Ellipsis Operator for Efficiency Golang
[Golang] Writing file in Golang Golang
[kubernetes/client-go] Go clients for talking to a kubernetes cluster. Golang
[Golang] Chuẩn bị 1 project golang. Coding

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Tham Gia Group DevOps nhé!
Để Nim có nhiều động lực ra nhiều bài viết.
Để nhận được những thông báo mới nhất.

Recent Posts

  • [Azure] The subscription is not registered to use namespace ‘Microsoft.ContainerService’ May 8, 2025
  • [Azure] Insufficient regional vcpu quota left May 8, 2025
  • [WordPress] How to add a Dynamic watermark on WordPress. May 6, 2025
  • [vnet/Azure] VNet provisioning via Terraform. April 28, 2025
  • [tracetcp] How to perform a tracert command using a specific port. April 3, 2025

Archives

  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021

Categories

  • BareMetal
    • NextCloud
  • CI/CD
    • Argo Events
    • ArgoCD
    • ArgoWorkflows
    • Git
      • Bitbucket
    • Harbor
    • Jenkins
    • Spinnaker
    • TeamCity
  • Coding
    • DevSecOps
    • Golang
    • Jquery & JavaScript
    • Laravel
    • NextJS 14 & ReactJS & Type Script
    • Python
    • Selenium
    • Terraform
      • AWS – Amazon Web Service
      • Azure Cloud
      • GCP – Google Cloud
  • Kubernetes & Container
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Docker
    • Helm Chart
    • Isito-EnvoyFilter
    • Kong Gateway
    • Kubernetes
      • Ingress
      • Pod
    • Longhorn – Storage
    • MetalLB
    • OAuth2 Proxy
    • Vault
    • VictoriaMetrics
  • Log, Monitor & Tracing
    • DataDog
    • ELK
      • Kibana
      • Logstash
    • Fluent
    • Grafana
    • Prometheus
  • Uncategorized
  • Admin

Copyright © 2025 NimTechnology.