从 selenium 会话中获取 cookie
Posted
技术标签:
【中文标题】从 selenium 会话中获取 cookie【英文标题】:Get cookies from selenium session 【发布时间】:2015-02-14 13:53:37 【问题描述】:我想在登录后获取会话变量和 cookie。我已经使用 selenium webdriver 并成功登录。但是如何在 selenium 登录后获取会话和 cookie。这是我的代码:
try
WebDriver driver = new FirefoxDriver();
driver.get("https://pacer.login.uscourts.gov/csologin/login.jsf");
System.out.println("the title is"+driver.getTitle());
WebElement id= driver.findElement(By.xpath("/html/body/div[3]/div/div[1]/div[1]/div[15]/div[2]/form/table[1]/tbody/tr/td[2]/input"));
WebElement pass=driver.findElement(By.xpath("/html/body/div[3]/div/div[1]/div[1]/div[15]/div[2]/form/table[2]/tbody/tr/td[2]/input"));
WebElement button=driver.findElement(By.xpath("/html/body/div[3]/div/div[1]/div[1]/div[15]/div[2]/form/div[2]/button[1]"));
id.sendKeys("USERNAME");
pass.sendKeys("PASSWORD");
button.click();
catch (Exception e)
e.printStackTrace();
请尽快提供您的建议。
谢谢
【问题讨论】:
@leo:是的,我尝试过相同的 driver.manage().getCookies()。但它返回空 []。 如果你展示你已经尝试过的东西,你在这里得到答案的机会会大大增加。你确定有可见的cookies吗?当我登录该网站时,我看不到任何内容。 Selenium WebDriver manager().getCookies() returns 0 always 的可能重复项 @leo: 我试过 Set我使用以下代码添加运行您的代码,并能够在我的控制台中获得以下值。
try
WebDriver driver = new FirefoxDriver();
driver.get("https://pacer.login.uscourts.gov/csologin/login.jsf");
System.out.println("the title is" + driver.getTitle());
WebElement id = driver
.findElement(By
.xpath("/html/body/div[3]/div/div[1]/div[1]/div[15]/div[2]/form/table[1]/tbody/tr/td[2]/input"));
WebElement pass = driver
.findElement(By
.xpath("/html/body/div[3]/div/div[1]/div[1]/div[15]/div[2]/form/table[2]/tbody/tr/td[2]/input"));
WebElement button = driver
.findElement(By
.xpath("/html/body/div[3]/div/div[1]/div[1]/div[15]/div[2]/form/div[2]/button[1]"));
id.sendKeys("USERNAME");
pass.sendKeys("PASSWORD");
button.click();
Thread.sleep(10000);
Set<Cookie> cookies = driver.manage().getCookies();
System.out.println("Size: " + cookies.size());
Iterator<Cookie> itr = cookies.iterator();
while (itr.hasNext())
Cookie cookie = itr.next();
System.out.println(cookie.getName() + "\n" + cookie.getPath()
+ "\n" + cookie.getDomain() + "\n" + cookie.getValue()
+ "\n" + cookie.getExpiry());
catch (Exception e)
e.printStackTrace();
控制台
标题为PACER登录
尺寸:1
JSESSIONID
/cslogin/
pacer.login.uscourts.gov
E44C8*********************400602
空
您也可以尝试使用显式等待来代替 Thread.sleep(10000)。我认为该网页需要一些时间来设置 cookie,因为它正忙于等待页面加载。
希望对你有所帮助。
【讨论】:
以上是关于从 selenium 会话中获取 cookie的主要内容,如果未能解决你的问题,请参考以下文章
org.openqa.selenium.SessionNotCreatedException:从 Jenkins CI 服务器执行时,从选项卡崩溃错误中的会话未创建异常
由于未知错误导致页面崩溃,Python Selenium 会话被删除:无法从选项卡崩溃中确定加载状态
未知错误:由于未知错误导致页面崩溃,会话被删除:无法从 ChromeDriver Selenium 崩溃的选项卡中确定加载状态