Не можете пропустить авторизацию, добавив правильные куки java seenium - PullRequest
0 голосов
/ 15 апреля 2020

Мне нужно пропустить авторизацию при открытии новой страницы. Как я знаю, я должен добавить «авторизированные» куки вместо стандартных куки, и, в соответствии с моей задачей, я хочу сохранить их в файле. Итак, во-первых, я получаю правильные куки с сайта и записываю их в файл.

        wDriver.get(link);
        logIn(wDriver);
        cookies = wDriver.manage().getCookies();
        dumpCookies(wDriver.manage().getCookies(), "cookies");

В этой части вход в систему - авторизация, dumpCookies - запись куки в файл, который выглядит как

File file = new File("cookies.data");
    file.delete();
    file.createNewFile();
    FileWriter fileWrite = new FileWriter(file);
    BufferedWriter Bwrite = new BufferedWriter(fileWrite);
    for (Cookie ck : cookies) {

        Bwrite.write((ck.getName() + ";" + ck.getValue() + ";" + ck.getDomain() + ";" + ck.getPath() + ";"
                + ck.getExpiry() + ";" + ck.isSecure()));
        Bwrite.newLine();
    }
    Bwrite.close();
    fileWrite.close();

И работает нормально. Более того, я проверил возможность авторизации, добавив правильные куки. После того, как я помещаю в файл команду ie, я делаю следующее

        wDriver.close();

        wDriver = new ChromeDriver(options);
        wDriver.navigate().to(link);

        for (Cookie currentCookie : wDriver.manage().getCookies()) {
            System.out.println( currentCookie );

        }

        // add right cookies
        for (Cookie cookie : cookies) {
            wDriver.manage().addCookie(cookie);
        }


        // re-visit the page
        wDriver.navigate().to(link);
        for (Cookie currentCookie: wDriver.manage().getCookies()) {
            System.out.println( currentCookie );

        }

    }

. Я сравнил файлы cookie и они стандартные перед добавлением и вправо после повторного открытия страницы. И я получил страницу авторизации в конце

Мои проблемы начались, когда я пытаюсь авторизоваться, используя куки из моего файла. Это то, что я делаю

       wDriver.navigate().to(bet_link);

        File file = new File("cookies.data");
        FileReader fileReader = new FileReader(file);
        BufferedReader Buffreader = new BufferedReader(fileReader);

        Set<Cookie> newCookies = new HashSet<>();
        while ((strline = Buffreader.readLine()) != null) {
            StringTokenizer token = new StringTokenizer(strline, ";");
            while (token.hasMoreTokens()) {
                String name = token.nextToken();
                String value = token.nextToken();
                String domain = token.nextToken();
                String path = token.nextToken();
                Date expiry = null;
                String val;
                SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd hh:mm:ss zzz yyyy", Locale.ENGLISH);
                if (!(val = token.nextToken()).equals("null")) {
                    expiry = formatter.parse(val);
                }
                Boolean isSecure = new Boolean(token.nextToken()).booleanValue();

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

                newCookies.add(ck);
            }
        }

        for (Cookie currentCookie : newCookies) {
            wDriver.manage().addCookie(currentCookie );

        }

        // cookies after ADD and before navigate.to
        for (Cookie cur_cook : wDriver.manage().getCookies()) {
            System.out.println( currentCookie );

        }

        wDriver.navigate().to(link);

       // cookies atfer navigate.to
        for (Cookie cur_cook : wDriver.manage().getCookies()) {
            System.out.println( currentCookie );

        }

И вот началось какое-то волшебство c.
Во-первых : куки до navigate.to правильно (как в файл), но файлы cookie после navigate.to являются стандартными. Естественно, я получаю несанкционированную страницу. ПОЧЕМУ? Когда печенье стало стандартом?

Во-вторых : это может помочь с первым вопросом, я думаю. Я не могу установить куки с именами _gat, _ym_isad и _ym_visorc_. Я проверял в l oop, куки с такими именами присутствуют после первой навигации, и когда я собираюсь заменить его на новый из файла, он просто исчезает из куки wDriver ... Я решил пропустить это проблемный и просто не добавил cook ie из файла, если он имеет такие имена, как _gat, _ym_isad и _ym_visorc_ *, и, конечно, это не помогло мне получить страницу авторизации и мои правильные файлы cookie сбрасываются в стандартное состояние после открытия новой страницы вместо правильной работы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...