Сохранение профиля в сниппете

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
Добрый день!
При авторизации возможна просьба ввести код подтверждения. Для ввода использую такой сниппет: Вызов win окна с полем для ввода и кнопкой, далее ввод на странице и сабмит, и последний шаг сохранение профиля. Так вот — профиль сохраняет, но видимо не весь, т.к. при попытке входа с загруженным профилем выкидывает на страницу авторизации.

Если использовать тот же сниппет сохранения профиля без остального кода — то все ОК. Подскажите пожалуйста куда смотреть!

Код:
System.Windows.Forms.Form F = new System.Windows.Forms.Form();
        F.BringToFront();
        F.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
        F.Text = "Введите код подтверждения VK";
        F.Width=300;    //- задает ширину формы в пикселях
        F.Height=150;    //- задает высоту формы в пикселях
        //создаем текстбокс
        System.Windows.Forms.TextBox textb = new System.Windows.Forms.TextBox();
        //указываем местоположение
        textb.Location = new System.Drawing.Point(10,50);
        //так же можно указать размеры текстбокса
        textb.Width=180;
        // добавляем его на форму
        F.Controls.Add(textb);
        project.Variables["check_code"].Value = textb.Text;
        //создаем кнопку
        System.Windows.Forms.Button button = new System.Windows.Forms.Button();
        //задаем имя чекбоксам
        button.Text = "Отправить";
        //положение в окне
        button.Location = new System.Drawing.Point(200,20);
        //размер кнопочки
        button.Size=new System.Drawing.Size(75, 75);
        //кидаем на форму
        F.Controls.Add(button);
        //описываем событие для клика по кнопке
        button.Click+= delegate(object sender, System.EventArgs e)
        {
                project.Variables["check_code"].Value = textb.Text;
                F.Dispose();
        };
        F.AcceptButton= button; //отправка по enter
        F.ShowDialog();
       
        //end winform
        //===========================================================
        //Start input && submit action
        //объявляем переменную
        HtmlElement checkInput = instance.ActiveTab.FindElementById("authcheck_code");
        if (checkInput.IsVoid) return -1;//проверка что элемент найден

        // Задержка эмуляции
        instance.WaitFieldEmulationDelay();
        //устанавливаем в найденный элемент значение из переменной проекта
        checkInput.SetValue(project.Variables["check_code"].Value,instance.EmulationLevel, false);

        //ищем на странице элемент и помещаем инфу о нем в переменную button
        HtmlElement button_set = instance.ActiveTab.FindElementById("login_authcheck_submit_btn");
        if (button_set.IsVoid) return -1;

        // Задержка эмуляции
        instance.WaitFieldEmulationDelay();
        //кликаем по найденному элементу
        button_set.Click();
       
        //сохраняем профиль
        project.Profile.Save(project.Directory+"/profile"+"/"+project.Variables["GL_login"].Value+"."+"zpprofile");
        return 0;
 

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
380
Баллы
63
Откройте два сохраненных профиля архиватором и сравните что в них лежит, а дальше можете поиграться с булевыми значениями в коде.
Код:
project.Profile.Save(project.Directory+"/profile"+"/"+project.Variables["GL_login"].Value+"."+"zpprofile",false,false,true,false,false,true);
 
  • Спасибо
Реакции: semafor

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
Откройте два сохраненных профиля архиватором и сравните что в них лежит, а дальше можете поиграться с булевыми значениями в коде.
Спасибо! Не знал о такой возможности.
Ну и отпишусь по вопросу. Написанный выше код использовался в качестве одного из case в свитче, и в принципе, еще до вопроса были сомнения в юзабильности такой портянки, поэтому изыскания пока отложил, сделал свитч на кубике а вызов winform-сабмит и сохранение профиля разделил на 2 сниппета. Сейчас все отрабатывает как надо.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)