Skip to content

Latest commit

 

History

History
326 lines (282 loc) · 11.4 KB

File metadata and controls

326 lines (282 loc) · 11.4 KB
title Trabalhando com cookies
linkTitle Trabalhando com cookies
weight 4
aliases
/documentation/pt-br/support_packages/working_with_cookies/
/pt-br/documentation/support_packages/working_with_cookies/
/pt-br/documentation/webdriver/browser/cookies/

Um cookie é um pequeno pedaço de dado enviado de um site e armazenado no seu computador. Os cookies são usados principalmente para reconhecer o usuário e carregar as informações armazenadas.

A API WebDriver fornece uma maneira de interagir com cookies com métodos integrados:

Add Cookie

É usado para adicionar um cookie ao contexto de navegação atual. Add Cookie aceita apenas um conjunto de objetos JSON serializáveis definidos. Aqui é o link para a lista de valores-chave JSON aceitos.

Em primeiro lugar, você precisa estar no domínio para qual o cookie será valido. Se você está tentando predefinir cookies antes de começar a interagir com um site e sua página inicial é grande / demora um pouco para carregar uma alternativa é encontrar uma página menor no site (normalmente a página 404 é pequena, por exemplo http://example.com/some404page)

{{< tabpane langEqualsHeader=true >}} {{< tab header="Java" text=true >}} {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/interactions/CookiesTest.java#L30-L32" >}} {{< /tab >}} {{< tab header="Python" text=true >}} {{< gh-codeblock path="examples/python/tests/interactions/test_cookies.py#L5-L9" >}} {{< /tab >}} {{< tab header="CSharp" text=true >}} {{< gh-codeblock path="examples/dotnet/SeleniumDocs/Interactions/CookiesTest.cs#L32-L34" >}} {{< /tab >}} {{< tab header="Ruby" text=true >}} {{< gh-codeblock path="examples/ruby/spec/interactions/cookies_spec.rb#L9-L11" >}} {{< /tab >}} {{< tab header="JavaScript" text=true >}} {{< gh-codeblock path="/examples/javascript/test/interactions/cookies.spec.js#L18">}} {{< /tab >}} {{< tab header="Kotlin" >}} import org.openqa.selenium.Cookie import org.openqa.selenium.chrome.ChromeDriver

fun main() { val driver = ChromeDriver() try { driver.get("https://example.com")

    // Adds the cookie into current browser context
    driver.manage().addCookie(Cookie("key", "value"))
} finally {
    driver.quit()
}

} {{< /tab >}} {{< /tabpane >}}

Get Named Cookie

Retorna os dados do cookie serializado correspondentes ao nome do cookie entre todos os cookies associados.

{{< tabpane langEqualsHeader=true >}} {{< tab header="Java" text=true >}} {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/interactions/CookiesTest.java#L38-L42" >}} {{< /tab >}} {{< tab header="Python" text=true >}} {{< gh-codeblock path="examples/python/tests/interactions/test_cookies.py#L13-L20" >}} {{< /tab >}} {{< tab header="CSharp" text=true >}} {{< gh-codeblock path="examples/dotnet/SeleniumDocs/Interactions/CookiesTest.cs#L40-L44" >}} {{< /tab >}} {{< tab header="Ruby" text=true >}} {{< gh-codeblock path="examples/ruby/spec/interactions/cookies_spec.rb#L17-L21" >}} {{< /tab >}} {{< tab header="JavaScript" text=true >}} {{< gh-codeblock path="/examples/javascript/test/interactions/cookies.spec.js#L35-L38">}} {{< /tab >}} {{< tab header="Kotlin" >}} import org.openqa.selenium.Cookie import org.openqa.selenium.chrome.ChromeDriver

fun main() { val driver = ChromeDriver() try { driver.get("https://example.com") driver.manage().addCookie(Cookie("foo", "bar"))

    // Get cookie details with named cookie 'foo'
    val cookie = driver.manage().getCookieNamed("foo")
    println(cookie)
} finally {
    driver.quit()
}

}
{{< /tab >}} {{< /tabpane >}}

Get All Cookies

Retorna 'dados de cookie serializados com sucesso' para o contexto de navegação atual. Se o navegador não estiver mais disponível, ele retornará um erro.

{{< tabpane langEqualsHeader=true >}} {{< tab header="Java" text=true >}} {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/interactions/CookiesTest.java#L52-L66" >}} {{< /tab >}} {{< tab header="Python" text=true >}} {{< gh-codeblock path="examples/python/tests/interactions/test_cookies.py#L24-L32" >}} {{< /tab >}} {{< tab header="CSharp" text=true >}} {{< gh-codeblock path="examples/dotnet/SeleniumDocs/Interactions/CookiesTest.cs#L51-L64" >}} {{< /tab >}} {{< tab header="Ruby" text=true >}} {{< gh-codeblock path="examples/ruby/spec/interactions/cookies_spec.rb#L26-L31" >}} {{< /tab >}} {{< tab header="JavaScript" text=true >}} {{< gh-codeblock path="/examples/javascript/test/interactions/cookies.spec.js#L49-L51">}} {{< /tab >}} {{< tab header="Kotlin" >}} import org.openqa.selenium.Cookie import org.openqa.selenium.chrome.ChromeDriver

fun main() { val driver = ChromeDriver() try { driver.get("https://example.com") driver.manage().addCookie(Cookie("test1", "cookie1")) driver.manage().addCookie(Cookie("test2", "cookie2"))

    // Get All available cookies
    val cookies = driver.manage().cookies
    println(cookies)
} finally {
    driver.quit()
}

}
{{< /tab >}} {{< /tabpane >}}

Delete Cookie

Exclui os dados do cookie que correspondem ao nome do cookie fornecido.

{{< tabpane langEqualsHeader=true >}} {{< tab header="Java" text=true >}} {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/interactions/CookiesTest.java#L74-L77" >}} {{< /tab >}} {{< tab header="Python" text=true >}} {{< gh-codeblock path="examples/python/tests/interactions/test_cookies.py#L35-L43" >}} {{< /tab >}} {{< tab header="CSharp" text=true >}} {{< gh-codeblock path="examples/dotnet/SeleniumDocs/Interactions/CookiesTest.cs#L70-L73" >}} {{< /tab >}} {{< tab header="Ruby" text=true >}} {{< gh-codeblock path="examples/ruby/spec/interactions/cookies_spec.rb#L40-L43" >}} {{< /tab >}} {{< tab header="JavaScript" text=true >}} {{< gh-codeblock path="/examples/javascript/test/interactions/cookies.spec.js#L61-L62">}} {{< /tab >}} {{< tab header="Kotlin" >}} import org.openqa.selenium.Cookie import org.openqa.selenium.chrome.ChromeDriver

fun main() { val driver = ChromeDriver() try { driver.get("https://example.com") driver.manage().addCookie(Cookie("test1", "cookie1")) val cookie1 = Cookie("test2", "cookie2") driver.manage().addCookie(cookie1)

    // delete a cookie with name 'test1'
    driver.manage().deleteCookieNamed("test1")
    
    // delete cookie by passing cookie object of current browsing context.
    driver.manage().deleteCookie(cookie1)
} finally {
    driver.quit()
}

}
{{< /tab >}} {{< /tabpane >}}

Delete All Cookies

Exclui todos os cookies do contexto de navegação atual.

{{< tabpane langEqualsHeader=true >}} {{< tab header="Java" text=true >}} {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/interactions/CookiesTest.java#L100-L105" >}} {{< /tab >}} {{< tab header="Python" text=true >}} {{< gh-codeblock path="examples/python/tests/interactions/test_cookies.py#L47-L55" >}} {{< /tab >}} {{< tab header="CSharp" text=true >}} {{< gh-codeblock path="examples/dotnet/SeleniumDocs/Interactions/CookiesTest.cs#L92-L97" >}} {{< /tab >}} {{< tab header="Ruby" text=true >}} {{< gh-codeblock path="examples/ruby/spec/interactions/cookies_spec.rb#L49-L54" >}} {{< /tab >}} {{< tab header="JavaScript" text=true >}} {{< gh-codeblock path="/examples/javascript/test/interactions/cookies.spec.js#L77-L78">}} {{< /tab >}} {{< tab header="Kotlin" >}} import org.openqa.selenium.Cookie import org.openqa.selenium.chrome.ChromeDriver

fun main() { val driver = ChromeDriver() try { driver.get("https://example.com") driver.manage().addCookie(Cookie("test1", "cookie1")) driver.manage().addCookie(Cookie("test2", "cookie2"))

    // deletes all cookies
    driver.manage().deleteAllCookies()
} finally {
    driver.quit()
}

}
{{< /tab >}} {{< /tabpane >}}

Same-Site Cookie Attribute

Permite que um usuário instrua os navegadores a controlar se os cookies são enviados junto com a solicitação iniciada por sites de terceiros. É usado para evitar ataques CSRF (Cross-Site Request Forgery).

O atributo de cookie Same-Site aceita dois parâmetros como instruções

Strict:

Quando o atributo sameSite é definido como Strict, o cookie não será enviado junto com solicitações iniciadas por sites de terceiros.

Lax:

Quando você define um atributo cookie sameSite como Lax, o cookie será enviado junto com uma solicitação GET iniciada por um site de terceiros.

Nota: a partir de agora, esse recurso está disponível no Chrome (versão 80+), Firefox (versão 79+) e funciona com Selenium 4 e versões posteriores.

{{< tabpane langEqualsHeader=true >}} {{< tab header="Java" text=true >}} {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/interactions/CookiesTest.java#L112-L121" >}} {{< /tab >}} {{< tab header="Python" text=true >}} {{< gh-codeblock path="examples/python/tests/interactions/test_cookies.py#L59-L71" >}}
{{< /tab >}} {{< tab header="CSharp" >}} using OpenQA.Selenium; using OpenQA.Selenium.Chrome;

namespace SameSiteCookie { class SameSiteCookie { static void Main(string[] args) { IWebDriver driver = new ChromeDriver(); try { driver.Navigate().GoToUrl("http://www.example.com");

    var cookie1Dictionary = new System.Collections.Generic.Dictionary<string, object>() {
      { "name", "test1" }, { "value", "cookie1" }, { "sameSite", "Strict" } };
    var cookie1 = Cookie.FromDictionary(cookie1Dictionary);

    var cookie2Dictionary = new System.Collections.Generic.Dictionary<string, object>() {
      { "name", "test2" }, { "value", "cookie2" }, { "sameSite", "Lax" } };
    var cookie2 = Cookie.FromDictionary(cookie2Dictionary);

    driver.Manage().Cookies.AddCookie(cookie1);
    driver.Manage().Cookies.AddCookie(cookie2);

    System.Console.WriteLine(cookie1.SameSite);
    System.Console.WriteLine(cookie2.SameSite);
  } finally {
    driver.Quit();
  }
}

} } {{< /tab >}} {{< tab header="Ruby" >}} require 'selenium-webdriver' driver = Selenium::WebDriver.for :chrome

begin driver.get 'https://www.example.com'

Adds the cookie into current browser context with sameSite 'Strict' (or) 'Lax'

driver.manage.add_cookie(name: "foo", value: "bar", same_site: "Strict") driver.manage.add_cookie(name: "foo1", value: "bar", same_site: "Lax") puts driver.manage.cookie_named('foo') puts driver.manage.cookie_named('foo1') ensure driver.quit end {{< /tab >}} {{< tab header="JavaScript" text=true >}} {{< gh-codeblock path="/examples/javascript/test/interactions/cookies.spec.js#L24-L26">}} {{< /tab >}} {{< tab header="Kotlin" >}} import org.openqa.selenium.Cookie import org.openqa.selenium.chrome.ChromeDriver

fun main() { val driver = ChromeDriver() try { driver.get("http://www.example.com") val cookie = Cookie.Builder("key", "value").sameSite("Strict").build() val cookie1 = Cookie.Builder("key", "value").sameSite("Lax").build() driver.manage().addCookie(cookie) driver.manage().addCookie(cookie1) println(cookie.getSameSite()) println(cookie1.getSameSite()) } finally { driver.quit() } } {{< /tab >}} {{< /tabpane >}}