我们大多数人都使用在线平台来做诸如网上购物、支付账单、订票等事情。这些在线平台(或网站)使用cookies来识别何时有新的访问。 说得轻松一点,这些不是你通常在甜点菜单上看到的cookies
这些是计算机cookies(或HTTP cookies或网络cookies)。
简单地说,cookie是一个由你的机器接收的数据包,并在不被改变或更改的情况下送回服务器。例如,当你访问任何网站时,网站会向你的机器发送cookies。由于这些cookies包含信息,它可以帮助网站跟踪你的访问或活动(不放纵你的隐私区)。

网站所有者(例如,在线购物门户网站)在浏览网站时使用cookies来保持对您的购物车的关注。如果没有cookies的存在,每次你在网站上打开一个新的链接时,你的购物车可能会变成空的(或者物品数量会重置为零)。
Selenium cookies可以广泛用于测试自动化项目,在Selenium自动化测试过程中执行与cookie相关的操作。为了实现这一要求,Selenium WebDriver API提供了内置的方法来与cookie进行交互。
在本博客结束时,你将会更好地与Selenium cookies API合作。我们还涵盖了一些常见的操作,如如何在Selenium WebDriver中获取cookie,使用Selenium清除会话cookie,等等。
那么,让我们开始咬住cookie吧
内容表
Cookies简介
Cookies通常用于识别网站上用户的身份。简单地说,cookie是由网络应用程序发送并存储在浏览器中的一部分数据。每当用户浏览一个网站时,有关该用户和他们的收藏夹的信息就会以键值对的形式存储在cookie中。
当用户再次访问该网站时,被存储的信息将被用于识别。
下面是LambdaTest网站使用cookie来识别用户的一个例子。在下面的截图中,你可以看到一个小的弹出窗口,显示了cookies的使用情况。

- 名称 - 这个字段包含cookie的名称。
- 值 - 这个字段包含cookie的值。
- 域 - 这个字段包含允许接收该cookie的主机。
- 路径 - 这个字段包含在请求的URL中需要发送Cookie头的URL。
- Expires / Max-Age - 这个字段包含过期日期或cookie的最大年龄。
- 大小 - 这个字段包含了cookie的大小。
- HttpOnly - 这个字段表示该cookie是否必须只通过HTTP使用。
- 安全 - 这个字段表示cookie只能通过安全的HTTPS连接发送到服务器(设置为真)。
- SameSite - 这个字段包含如果cookie使用实验性的SameSite属性的值(严格或宽松)。
- 优先权 - 这个字段包含低、中(默认)或高的值,如果启用了贬值的cookie优先权属性。

以下是网站cookies的主要功能。
- 跟踪用户的浏览活动
- 记忆用户的登录细节
- 跟踪网站中的访客数量,进一步帮助网站所有者识别他们每天的独特访客。
为什么要在Selenium Automation WebDriver中处理cookies?
本节揭示了在测试自动化脚本中使用Selenium cookies API的主要原因。在我们的自动化脚本中存储cookie和处理它们的重要方面是为了减少执行和实施的时间。
以我们有多个测试案例的情况为例,每个案例都有登录网站的前提条件。在这种情况下,我们可以存储cookies,然后用于登录目的。这反过来有助于减少执行时间。
Selenium Cookies API简介
Selenium WebDriver为处理网站中的cookies提供了多个命令。这些Selenium cookies API为你提供了互动和查询cookies所需的机制。在Selenium Java中,这些方法是org.openqa.selenium.Cookie包的一部分。
下面是在Selenium中处理cookie的各种方法,可以使用driver.manage()方法访问。
方法 | 目的 |
getCookies() | 它返回所有Cookie的列表 |
getCookieNamed("Cookie的名称") | 它返回符合作为参数指定的名称的cookie。 |
addCookie("Cookie") | 它创建并添加一个新的cookie |
deleteCookie("Cookie") | 它删除了一个特定的cookie |
deleteCookieName("Cookie的名称") | 它删除了与作为参数指定的名称相匹配的cookie |
deleteAllCookies | 它删除了所有的cookie |
行动中的Selenium Cookies API
现在我们已经涵盖了在Selenium WebDriver中处理cookie的基本方面,让我们动手实现一下吧。为了演示在Selenium中处理cookie,我们首先在本地Selenium网格上使用相应的Selenium API。如果你想快速提高你的Selenium技能,请查看我们详细的Selenium WebDriver教程。
让我们在脚本中使用LambdaTest主页来了解使用Selenium WebDriver处理cookie的命令。
1.如何在Selenium WebDriver中获取Cookies
如前所述,如果你想获得所有存储的cookies,你可以使用下面的Selenium WebDriver命令。
driver.manage().getCookies()
这将检索到所有存储的cookie的详细信息。下面是一个在Selenium WebDriver中获取cookies的简单脚本。
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class HandleCookies {
public static void main(String args[]) {
System.setProperty("webdriver.chrome.driver", "ChromeDriver Path");
WebDriver driver = new ChromeDriver();
String url ="https://www.lambdatest.com/";
driver.get(url);
driver.manage().window().maximize();
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
Set<Cookie> cookiesList = driver.manage().getCookies();
for(Cookie getcookies :cookiesList) {
System.out.println(getcookies);
}
driver.close();
}
}
Cookie信息可以存储在一个文件中,可以用来在没有凭证的情况下登录网站。
要获得某个特定cookie的信息,请使用下面的命令。
driver.manage().getCookieNamed(arg0);
下面是一个简单的脚本,用于获取特定cookie的信息。
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class HandleCookies {
public static void main(String args[]) {
System.setProperty("webdriver.chrome.driver", "ChromeDriver Path");
WebDriver driver = new ChromeDriver();
String url ="https://www.lambdatest.com/";
driver.get(url);
driver.manage().window().maximize();
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
Cookie cookieValue = driver.manage().getCookieNamed("JSESSIONID");
System.out.println(cookieValue.getValue());
driver.close();
}
}
其实现是不言自明的;因此,我们不做相同的代码演练。
2.如何在Selenium WebDriver中添加一个新的Cookie
要添加一个新的cookie,你可以使用以下命令
driver.manage().addCookie(cookieName); //specify the name of the cookie to be added
在添加一个cookie之前,我们必须先创建它并添加值。之后,我们应该传递新创建的cookie的名称。
这里有一个简单的脚本,演示了Selenium cookies API添加一个新的cookie。
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class HandleCookies {
public static void main(String args[]) {
System.setProperty("webdriver.chrome.driver", "ChromeDriver Path");
WebDriver driver = new ChromeDriver();
String url ="https://www.lambdatest.com/";
driver.get(url);
driver.manage().window().maximize();
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
//For creating a new cookie we should pass the name of the cookie and its value
Cookie cname = new Cookie("myCookie", "12345678999");
driver.manage().addCookie(cname);
//retrieve the cookies to view the newly added cookie
Set<Cookie> cookiesList = driver.manage().getCookies();
for(Cookie getcookies :cookiesList) {
System.out.println(getcookies );
}
driver.close();
}
}
一旦你运行这个测试脚本,你就能在输出控制台看到新添加的cookie。

3.如何在Selenium WebDriver中删除一个cookie
在Selenium WebDriver命令的帮助下,你可以删除一个特定的cookie或删除所有的cookie。
该命令用于删除一个特定的cookie。
driver.manage().deleteCookie(arg0); // Deletes the specific cookie
该命令用于删除使用其名称匹配的特定cookie。
driver.manage().deleteCookieNamed(arg0); // Deletes the specific cookie by its name
该命令用于删除所有的cookie。
driver.manage().deleteAllCookies(); // Deletes all the cookies
下面是同样的脚本,演示了如何删除一个特定的cookie。
下面的脚本演示了如何使用Selenium cookies API来删除所有的cookie。
如何在云Selenium网格上使用Selenium Cookies API
与其在本地Selenium网格上运行Selenium测试,不如在LambdaTest等基于云的Selenium网格上执行同样的测试。在云上进行网站测试有许多好处,因为它有助于实现急需的可扩展性、可靠性和性能。
LambdaTest提供了一个在线云平台,可以轻松地运行你的所有Selenium测试。此外,将使用本地Selenium网格的代码移植到LambdaTest基于云的Selenium网格也很容易。因此,你可以通过将Selenium测试自动化转移到基于云的网格中,最大限度地利用Selenium的并行测试。
一旦你在LambdaTest上创建了一个账户,请注意LambdaTest的个人资料部分中的用户名和访问密钥。用户名和访问密钥的组合被用来访问LambdaTest的远程Selenium网格。这些能力是使用LambdaTest能力生成器生成的。
下面显示的是Selenium cookies API的演示,其执行是在LambdaTest Selenium网格上进行的。
正如上面所看到的,没有任何逻辑上的变化,大部分的实现都没有改变。然而,远程WebDriver取代了本地Selenium WebDriver,用于访问基于云的Selenium Grid。
由于我们在测试套件中有四个测试,我们利用TestNG Selenium的并行测试来实现线程级别的并行性。下面显示的是testng.xml文件,在@Test注解下并行运行测试。此外,你可以在LambdaTest上查看更多的TestNG学习中心,以获得对TestNG框架的深入了解。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" parallel="tests">
<test name="ChromeBrowserTest">
<parameter name="browser" value="chrome"/>
<classes>
<class name="Pages.HandleCookies">
</class>
</classes>
</test>
</suite>
下面是我们在Eclipse中测试的执行状态。

要在LambdaTest平台上运行这个测试,请右键单击你在IDE中创建的testng.xml。点击Run As -> TestNG Suite。这样,测试就会在LambdaTest平台上被触发。
下面显示的是控制台输出,这表明测试执行成功了。

跳到LambdaTest的自动化仪表板,检查测试执行的状态。


通过这些,我们已经展示了主要的Selenium cookies API,这些API可以用来对cookies进行操作。
结束了

总而言之,我们深入研究了cookie的各个方面,它主要用于网站所有者跟踪用户的访问或活动。Selenium提供了一些方法(或API),你可以利用这些方法对cookie进行各种操作。我们演示了如何在Selenium中获取cookie,如何在Selenium中删除所有的cookie,如何删除某个cookie,等等。
与其在本地Selenium网格上进行Selenium自动化测试,建议使用LambdaTest这样基于云的Selenium网格来加快测试执行。它可以让你在2,000多个浏览器和操作系统上大规模地运行Selenium测试。
我希望你觉得这篇文章非常有用,信息量大。我很想听听你是如何将Selenium cookies API用于大规模网站(或网络应用)的。请随时与你的朋友和同事分享这个博客。
测试愉快...!
常见的问题
什么是Selenium中的cookie?
Cookie是当你访问某些网站时存储在你电脑上的一个小文件。Cookie用于收集和存储有关你如何与我们的网站互动的信息,并允许我们记住你,即使你在以后的时间返回到网站。
Selenium可以操纵cookies吗?
Selenium提供捕捉、操纵和设置cookies的功能。它还提供了检查某个cookie是否存在的功能。你可以使用以下方法与Selenium cookies互动和查询。
- .getCookies()- 返回所有cookies的列表
- .getCookieNamed("cookie name")- 根据cookie的名字返回cookie
- .addCookie("cookie")- 创建并添加一个cookie
- .deleteCookie("cookie")- 删除一个cookie
- .deleteCookieName("cookie name")- 基于它的名字删除cookie
- .deleteAllCookies- 删除所有的cookie
现在就把你的网站测试自动化,申请100分钟免费测试
X

