zoukankan      html  css  js  c++  java
  • [Selenium] 操作浏览器 Cookies

    WebDriver 提供了一系列 Cookies 的操作来获取、填写、删除 Cookies 的方法,节省了多次在登陆页面的查找元素并填写登录信息的时间。

    1)获取 Cookies ,并保存到文件中以备后续使用

    package com.learningselenium.normalwebdriver;

    import java.io.BufferedWriter;

    import java.io.File;

    import java.io.FileWriter;

    import java.io.FileReader;

    import java.util.Date;

    import java.util.StringTokenizer;

    import org.openqa.selenium.By;

    import org.openqa.selenium.Cookie;

    import org.openqa.selenium.Webdriver;

    import org.openqa.selenium.firefox.FirefoxDriver;

    public class testGetCookies{

      public static void main(String... args){

        WebDriver driver = new FirefoxDriver();

        driver.get("http://zhizhu.com/#signin");

        //填写用户信息,然后登陆

        driver.findElement(By.name("email")).sendKeys("seleniumcookies@126.com");

        driver.findElement(By.name("password").sendKeys("cookies123"));

        if(driver.findElement(By.name("rememberme")).isSelected()){

          driver.findElement(By.name("remermberme")).click();

        }

        driver.findElement(By.className("sign-button")).click();

        

        File cookieFile = new File("zhizhu.cookie.txt");

        try{

          cookieFile.delete();

          cookieFile.createNewFile();

          FileWriter fileWriter = new FileWriter(cookieFile);

          BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

          for (Cookie cookie : driver.manage().getCookies()){

            bufferedWriter.write((cookie.getName() + ";" + cookie.getDomain() + ";" + cookie.getExpiry() + ";" + cookie.isSecure()));

            bufferedWriter.newLine();

          }

          bufferedWriter.flush();

          bufferedWriter.close();

          fileWriter.close();

        }catch (Exception ex){

          ex.printStackTrace();

        }

        driver.quit();

      }

    }

    2)读取保存的Cookies 信息并自动填充到新打开的浏览器 Cookies 中,然后直接进入登陆状态后的页面

    public class testAddCookies{

      private static BufferedReader bufferedReader;

      public static void main(String... args){

        WebDriver driver = new FirefoxDriver();

        driver.get("http://zhizhu.com/#signin");

        try{

          File cookieFile = new File("zhihu.cookie.txt");

          FileReader fr = new FileReader(cookieFile);

          bufferedReader = new BufferedReader(fr);

          String line;

          while((line = bufferedReader.readLine()) != null){

            StringTokenizer stringTokenizer = new StringTokenizer(line, ";");

            while (stringTokenizer.hasMoreTokens()){

              String name = stringTokenizer.nextToken();

              String value= stringTokenizer.nextToken();

              String domain = stringTokenizer.nextToken();

              String path = stringTokenizer.nextToken();

              Date expiry = null;

              String dt;

              if(! (dt = stringTokenizer.nextToken()).equals("null")){

                expiry = new Date(dt);

              }

              boolean isSecure = new Boolean(stringTokenizer.nextToken()).booleanVaue();

              Cookie cookie = new Cookie(name, value, domain, path, expiry, isSecure);

            }

          }

        }catch(Exception ex){

          ex.printStackTrace();

        }

        driver.get("http://www.zhihu.com");

    }    

  • 相关阅读:
    vue全家桶
    uniapp——如何配置scss和uview ui框架
    uniapp——自定义input清除事件
    响应式页面中的echart
    elementui 切换下拉框值,改变验证规则prop的表单项是否为必填项
    小程序view标签内容 文本过长,自动换行的问题
    vue 中使用图片查看器插件Viewer.js
    跳转不同导航,滚动条滚回初始
    vue项目中回显当前时间的农历时间
    移动端点击导航滑动展示全部选项,以为跳转页面定位到相应位置
  • 原文地址:https://www.cnblogs.com/feifeidxl/p/4551492.html
Copyright © 2011-2022 走看看