Выбрать , день, месяц и год C# кодом. В MAIL.RU

Лёня

Client
Регистрация
26.09.2023
Сообщения
27
Благодарностей
1
Баллы
3
Помогите с выбором дат на С# кодом .
 

Вложения

Ахилес

Client
Регистрация
11.11.2020
Сообщения
870
Благодарностей
355
Баллы
63
незнаю как C# кодом, а на кубиках кликаешь по полю, потом кликаешь по нужному варианту.
 

Лёня

Client
Регистрация
26.09.2023
Сообщения
27
Благодарностей
1
Баллы
3
Ахилес , это я понимаю.
Мне нужно чтобы у меня выбералась конкретная дата из профил.
А так спасибо ))
если еще есть какие нибудь варианты предлагай )
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 682
Благодарностей
1 866
Баллы
113
если еще есть какие нибудь варианты предлагай )
Разделить нужную дату на день, месяц, год

Работа с датой и временем в Zennoposter с использованием методов C#

Определить какими действиями устанавливается нужное значение (может просто подстановка значения в какой то атрибут, а может через клики)
Выполнить эти действия.
 

Лёня

Client
Регистрация
26.09.2023
Сообщения
27
Благодарностей
1
Баллы
3
Разделить нужную дату на день, месяц, год

Работа с датой и временем в Zennoposter с использованием методов C#

Определить какими действиями устанавливается нужное значение (может просто подстановка значения в какой то атрибут, а может через клики)
Выполнить эти действия.
да кликами всё выходило , после даже кликами не получается
C# кодом разбирался не выходит.

Можете помочь через C# решить данный вопрос, скинуть готовый вариант.
 

Вложения

Последнее редактирование:

radv

Client
Регистрация
11.05.2015
Сообщения
3 682
Благодарностей
1 866
Баллы
113
да кликами всё выходило , после даже кликами не получается
Возможно xpath элемента там меняется, или чтобы элементы подгрузились, надо выполнить какое то действие или клик в поле, и потом искать эти элементы.
 

Ахилес

Client
Регистрация
11.11.2020
Сообщения
870
Благодарностей
355
Баллы
63
Я может сейчас банальщину выдам... но вы не первый и не последний кто мучается с выбором селекта на майл.ру.
на форуме по этому ресурсу просто куча материала. есть готовый шаблон для клиентов, вроде как там все сделано по этим селектам.
поиск по форуму тоже выдает кучу инфы. вот ознакомьтесь с темой и отталкиваясь от нее можно дальше рыть https://zennolab.com/discussion/threads/vybor-opredelennogo-znachenija-v-vypadajuschem-spiske.78325/
 

Лёня

Client
Регистрация
26.09.2023
Сообщения
27
Благодарностей
1
Баллы
3
Я может сейчас банальщину выдам... но вы не первый и не последний кто мучается с выбором селекта на майл.ру.
на форуме по этому ресурсу просто куча материала. есть готовый шаблон для клиентов, вроде как там все сделано по этим селектам.
поиск по форуму тоже выдает кучу инфы. вот ознакомьтесь с темой и отталкиваясь от нее можно дальше рыть https://zennolab.com/discussion/threads/vybor-opredelennogo-znachenija-v-vypadajuschem-spiske.78325/
Пробовал смотреть, читать инфу на сайте ZennoLab.
Из указанной теории(и всей теории которая есть) получилось составить код с использованием XPath.

C#:
HtmlElement he =instance.ActiveTab.FindElementByXPath("//div[@data-test-id='bdate-tooltip']//div[@class='nativeSelect-0-2-328 touch-0-2-326']//option[@class='option-0-2-336' ][@value='13']",0);

//HtmlElement he = instance.ActiveTab.FindElementByAttribute("div","class","base-0-2-106\\ first-0-2-112\\ focus-0-2-109","regexp",0);

//he.Click();

he.SetValue("//div[@data-test-id='bdate-tooltip']//div[@class='nativeSelect-0-2-328 touch-0-2-326']//option[@class='option-0-2-336' ][@value='13']","Full",true,true);
И всё равно такая же история не получается выбрать дату .
Подскажите как и где подправить .

P.s. этот элемент находится нормально в гугле: //div[@data-test-id='bdate-tooltip']//div[@class='nativeSelect-0-2-328 touch-0-2-326']//option[@class='option-0-2-336' ][@value='13']
 

Вложения

Последнее редактирование:

radv

Client
Регистрация
11.05.2015
Сообщения
3 682
Благодарностей
1 866
Баллы
113
Подскажите как и где подправить .

P.s. этот элемент находится нормально в гугле: //div[@data-test-id='bdate-tooltip']//div[@class='nativeSelect-0-2-328 touch-0-2-326']//option[@class='option-0-2-336' ][@value='13']
попробуйте расширение Chropath для поиска элементов и проверки XPATH
Скорее всего надо изменить xpath, он может указывать на не кликабельный элемент, или пробовать другие варианты клика или через эмуляцию мыши.
 

soprano

Client
Регистрация
25.08.2011
Сообщения
799
Благодарностей
843
Баллы
93
Помогите с выбором дат на С# кодом .
Вот так работало когда-то
C#:
Active.FindElementByXPath("//span[contains(text(), 'Day')]", 0).RiseEvent("click", "Full");
Active.FindElementByXPath("//span[@class='b-dropdown__list__item__text'][starts-with(text(), '"+ Day +"')]", 0).RiseEvent("click", "Full");
Thread.Sleep(555);

string [] Month = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
Active.FindElementByXPath("//span[contains(text(), 'Month')]", 0).RiseEvent("click", "Full");
Active.FindElementByXPath("//span[@class='b-dropdown__list__item__text'][starts-with(text(), '"+ Month[new Random().Next(0, Month.Count())] +"')]", 0).RiseEvent("click", "Full");
Thread.Sleep(333);

Active.FindElementByXPath("//span[contains(text(), 'Month')]", 0).RiseEvent("click", "Full");
Active.FindElementByXPath("//span[@class='b-dropdown__list__item__text'][starts-with(text(), '"+ Year +"')]", 0).RiseEvent("click", "Full");
Thread.Sleep(777);
Надо только Xpath проверить.
 
  • Спасибо
Реакции: Лёня

Лёня

Client
Регистрация
26.09.2023
Сообщения
27
Благодарностей
1
Баллы
3
Вот так работало когда-то
C#:
Active.FindElementByXPath("//span[contains(text(), 'Day')]", 0).RiseEvent("click", "Full");
Active.FindElementByXPath("//span[@class='b-dropdown__list__item__text'][starts-with(text(), '"+ Day +"')]", 0).RiseEvent("click", "Full");
Thread.Sleep(555);

string [] Month = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
Active.FindElementByXPath("//span[contains(text(), 'Month')]", 0).RiseEvent("click", "Full");
Active.FindElementByXPath("//span[@class='b-dropdown__list__item__text'][starts-with(text(), '"+ Month[new Random().Next(0, Month.Count())] +"')]", 0).RiseEvent("click", "Full");
Thread.Sleep(333);

Active.FindElementByXPath("//span[contains(text(), 'Month')]", 0).RiseEvent("click", "Full");
Active.FindElementByXPath("//span[@class='b-dropdown__list__item__text'][starts-with(text(), '"+ Year +"')]", 0).RiseEvent("click", "Full");
Thread.Sleep(777);
Надо только Xpath проверить.
Спасибо за код !
Один вопрос к какому типу данных мы привязывали пер. Active и Метод FindElementByXPath ?
 

soprano

Client
Регистрация
25.08.2011
Сообщения
799
Благодарностей
843
Баллы
93
  • Спасибо
Реакции: Лёня

Лёня

Client
Регистрация
26.09.2023
Сообщения
27
Благодарностей
1
Баллы
3
C#:
Tab Active = instance.ActiveTab;
C#:
Tab Active = instance.ActiveTab;
Active.FindElementByXPath("//div[@class='select-0-2-320 daySelect-0-2-321']",0).RiseEvent("click","Full");
Active.FindElementByXPath("//option[contains(text(),'День')]",0).RiseEvent("click","Full");
Пробовал, не получается .
Кликает на само поле "День" выпадает минюшка с выбором даты и после этого курсор уходит влево.
Помогите с написание действующего кода .
Все значения в Xpath перебрал.
 

volody00

Client
Регистрация
06.09.2016
Сообщения
794
Благодарностей
814
Баллы
93
C#:
Random r = new Random();
int Day = project.Profile.BornDay;
int month = project.Profile.BornMonth;
int year = r.Next(20, 40);

var daySelect = instance.ActiveTab.FindElementByXPath("//div[@data-test-id='bdate-tooltip']//div[contains(@class, 'control')]", 0);
if(daySelect.IsVoid) throw new Exception("no day");

var monthSelect = instance.ActiveTab.FindElementByXPath("//div[@data-test-id='bdate-tooltip']//div[contains(@class, 'control')]", 1);
if(monthSelect.IsVoid) throw new Exception("no month");

var yearSelect = instance.ActiveTab.FindElementByXPath("//div[@data-test-id='bdate-tooltip']//div[contains(@class, 'control')]", 2);
if(yearSelect.IsVoid) throw new Exception("no year");

instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(daySelect);
instance.ActiveTab.FullEmulationMouseClick("left", "click");
Thread.Sleep(r.Next(1000, 3000));

for(int i=0;i<Day;i++)
{
    instance.ActiveTab.KeyEvent("DOWN", "press", "");
    //Thread.Sleep(r.Next(200, 1000));
}
Thread.Sleep(r.Next(1000, 3000));
instance.ActiveTab.KeyEvent("Enter", "press", "");
Thread.Sleep(r.Next(1000, 3000));
//

instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(monthSelect);
instance.ActiveTab.FullEmulationMouseClick("left", "click");
Thread.Sleep(r.Next(1000, 3000));

for(int i=0;i<month;i++)
{
    instance.ActiveTab.KeyEvent("DOWN", "press", "");
    //Thread.Sleep(r.Next(200, 1000));
}
Thread.Sleep(r.Next(1000, 3000));
instance.ActiveTab.KeyEvent("Enter", "press", "");
Thread.Sleep(r.Next(1000, 3000));
//
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(yearSelect);
instance.ActiveTab.FullEmulationMouseClick("left", "click");
Thread.Sleep(r.Next(1000, 3000));

for(int i=0;i<year;i++)
{
    instance.ActiveTab.KeyEvent("DOWN", "press", "");
    //Thread.Sleep(r.Next(200, 1000));
}
Thread.Sleep(r.Next(1000, 3000));
instance.ActiveTab.KeyEvent("Enter", "press", "");
Thread.Sleep(r.Next(1000, 3000));
 
  • Спасибо
Реакции: Alexmd и Лёня

Лёня

Client
Регистрация
26.09.2023
Сообщения
27
Благодарностей
1
Баллы
3
C#:
Random r = new Random();
int Day = project.Profile.BornDay;
int month = project.Profile.BornMonth;
int year = r.Next(20, 40);

var daySelect = instance.ActiveTab.FindElementByXPath("//div[@data-test-id='bdate-tooltip']//div[contains(@class, 'control')]", 0);
if(daySelect.IsVoid) throw new Exception("no day");

var monthSelect = instance.ActiveTab.FindElementByXPath("//div[@data-test-id='bdate-tooltip']//div[contains(@class, 'control')]", 1);
if(monthSelect.IsVoid) throw new Exception("no month");

var yearSelect = instance.ActiveTab.FindElementByXPath("//div[@data-test-id='bdate-tooltip']//div[contains(@class, 'control')]", 2);
if(yearSelect.IsVoid) throw new Exception("no year");

instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(daySelect);
instance.ActiveTab.FullEmulationMouseClick("left", "click");
Thread.Sleep(r.Next(1000, 3000));

for(int i=0;i<Day;i++)
{
    instance.ActiveTab.KeyEvent("DOWN", "press", "");
    //Thread.Sleep(r.Next(200, 1000));
}
Thread.Sleep(r.Next(1000, 3000));
instance.ActiveTab.KeyEvent("Enter", "press", "");
Thread.Sleep(r.Next(1000, 3000));
//

instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(monthSelect);
instance.ActiveTab.FullEmulationMouseClick("left", "click");
Thread.Sleep(r.Next(1000, 3000));

for(int i=0;i<month;i++)
{
    instance.ActiveTab.KeyEvent("DOWN", "press", "");
    //Thread.Sleep(r.Next(200, 1000));
}
Thread.Sleep(r.Next(1000, 3000));
instance.ActiveTab.KeyEvent("Enter", "press", "");
Thread.Sleep(r.Next(1000, 3000));
//
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(yearSelect);
instance.ActiveTab.FullEmulationMouseClick("left", "click");
Thread.Sleep(r.Next(1000, 3000));

for(int i=0;i<year;i++)
{
    instance.ActiveTab.KeyEvent("DOWN", "press", "");
    //Thread.Sleep(r.Next(200, 1000));
}
Thread.Sleep(r.Next(1000, 3000));
instance.ActiveTab.KeyEvent("Enter", "press", "");
Thread.Sleep(r.Next(1000, 3000));
Спасибо большое, все знчения выбираются!
 

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