1. 程式人生 > >selenium2java利用mysq解決向瀏覽器插入cookies時token過期問題

selenium2java利用mysq解決向瀏覽器插入cookies時token過期問題

本人在學習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處理多使用者同時線上

公眾號地圖 ☢️