米鼠商城

多快好省,买软件就上米鼠网

最新项目

人才服务

靠谱的IT人才垂直招聘平台

selenium2java利用mysq解决向浏览器插入cookies时token过期问题

  • Elli_ON
  • 2
  • 2019-08-28 10:59

本人在学习selenium2java中通过浏览器插入cookies模拟用户登录的时候,发现一个问题,就是token值过期的问题,后来学习了selenium2java连接数据库后找到了一个更好的解决方案。每次插入cookies的时候总是从数据库拿到最新的token,这样就完美解决了过期的问题。

这个是我登录后从浏览器拿到的cookies:

[Automatic_login=18436035355%7Ce3ceb5881a0a1fdaad01296d7554868d%7CStudent; expires=星期二, 21 三月 2017 01:59:55 CST; path=/;  domain=www.dz101.com, Hm_lvt_52b97b391587eb6d3e582caa097d6f91=1489471192; expires=星期三, 14 三月 2018 01:59:56 CST; path=/;   domain=.dz101.com, MyName=18436035355; expires=星期二, 21 三月 2017 01:59:54 CST; path=/;   domain=www.dz101.com, User_token_Session=f24f16d472b222271e6dcf27077231b9; expires=星期二, 21 三月 2017 01:59:54 CST; path=/;   domain=www.dz101.com, User_identity_Session=1; expires=星期二, 21 三月 2017 01:59:54 CST; path=/;   domain=www.dz101.com, PHPSESSID=1s2uvdrj33d72qvj2qlqojhsl7; path=/; domain=www.dz101.com, Hm_lpvt_52b97b391587eb6d3e582caa097d6f91=1489471196;  path=/; domain=.dz101.com]

经过分析和尝试发现,其实只有插入MyName和User_token_Session这两项就可以了。   下面是我成功插入后的cookies:

[Hm_lvt_52b97b391587eb6d3e582caa097d6f91=1489472871; expires=星期三, 14 三月 2018 02:27:53 CST; path=/;  domain=.dz101.com, MyName=18436035355; path=/;  domain=www.dz101.com, User_token_Session=f24f16d472b222271e6dcf27077231b9; path=/;  domain=www.dz101.com, PHPSESSID=uahgb7ll1405h0p5jhloipt7a2; path=/;  domain=www.dz101.com, Hm_lpvt_52b97b391587eb6d3e582caa097d6f91=1489472873; path=/; domain=.dz101.com]

下面是我写的代码

//向浏览器添加cookies
public static void addCookies(WebDriver driver, String mobile) throws ClassNotFoundException, SQLException, IOException {
Cookie a = new Cookie("MyName", mobile);
Cookie b = new Cookie("User_token_Session", MySql.getNewToken(mobile));
driver.manage().addCookie(a);
driver.manage().addCookie(b);
driver.navigate().refresh();
//查看浏览器cookies
// Set<Cookie> cooies = driver.manage().getCookies();
// System.out.println(cooies);
}

下面是getNewToken(String mobile))方法:

    public static String getNewToken(String mobile) throws ClassNotFoundException, SQLException, IOException {
// 加载驱动程序
        Class.forName(driver);
// 连接数据库
        Connection conn = DriverManager.getConnection(url, user, password);
        if (!conn.isClosed())
            System.out.println("Succeeded connecting to the Database!");
//statement用来执行SQL语句
        Statement statement = conn.createStatement();
// 要执行的SQL语句
        String sql = "select * from users where mobile = " + mobile;
        output(sql);
// 结果集
        ResultSet rs = statement.executeQuery(sql);
        System.out.println("查询结果如下所示:");
        String id = null;
        while (rs.next()) {
            // 选择列数据
            id = rs.getString("id");
            // 输出结果
            System.out.println(rs.getString("id") + "\t" + id);
        }
        rs.close();
        String sql2 = "select * from users_token where uid = " + id + " ORDER BY create_time DESC LIMIT 1";
        ResultSet rs2 = statement.executeQuery(sql2);
        String token = null;
        System.out.println("查询结果如下所示:");
        while (rs2.next()) {
            token = rs2.getString(token);
            output(token);
            saveToFile(getNow() + token, "runlog.log", false);
        }
        conn.close();
        return token;
    }

往期文章精选

  1. java一行代码打印心形
  2. Linux性能监控软件netdata中文汉化版
  3. 接口测试代码覆盖率(jacoco)方案分享
  4. 性能测试框架
  5. 如何在Linux命令行界面愉快进行性能测试
  6. 图解HTTP脑图
  7. 写给所有人的编程思维
  8. json数据格式化输出到控制台
  9. 如何测试概率型业务接口
  10. 将swagger文档自动变成测试代码
  11. Mac+httpclient高并发配置实例
  12. httpclient处理多用户同时在线

公众号地图 ☢️ 一起来~FunTester



这里给大家推荐一个在线软件复杂项交易平台:米鼠网 https://www.misuland.com

米鼠网自成立以来一直专注于从事软件项目人才招聘软件商城等,始终秉承“专业的服务,易用的产品”的经营理念,以“提供高品质的服务、满足客户的需求、携手共创双赢”为企业目标,为中国境内企业提供国际化、专业化、个性化、的软件项目解决方案,我司拥有一流的项目经理团队,具备过硬的软件项目设计和实施能力,为全国不同行业客户提供优质的产品和服务,得到了客户的广泛赞誉。



如有侵权请联系邮箱(service@misuland.com)

猜你喜欢

评论留言