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

  • Автор темы Автор темы Лёня
  • Дата начала Дата начала

Лёня

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

Вложения

  • снимок.PNG
    снимок.PNG
    2 KB · Просмотры: 157
Ахилес , это я понимаю.
Мне нужно чтобы у меня выбералась конкретная дата из профил.
А так спасибо ))
если еще есть какие нибудь варианты предлагай )
 
если еще есть какие нибудь варианты предлагай )
Разделить нужную дату на день, месяц, год

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

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

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

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

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

Вложения

  • Ошибка.PNG
    Ошибка.PNG
    61,4 KB · Просмотры: 113
Последнее редактирование:
да кликами всё выходило , после даже кликами не получается
Возможно xpath элемента там меняется, или чтобы элементы подгрузились, надо выполнить какое то действие или клик в поле, и потом искать эти элементы.
 
Я может сейчас банальщину выдам... но вы не первый и не последний кто мучается с выбором селекта на майл.ру.
на форуме по этому ресурсу просто куча материала. есть готовый шаблон для клиентов, вроде как там все сделано по этим селектам.
поиск по форуму тоже выдает кучу инфы. вот ознакомьтесь с темой и отталкиваясь от нее можно дальше рыть https://zennolab.com/discussion/threads/vybor-opredelennogo-znachenija-v-vypadajuschem-spiske.78325/
 
Я может сейчас банальщину выдам... но вы не первый и не последний кто мучается с выбором селекта на майл.ру.
на форуме по этому ресурсу просто куча материала. есть готовый шаблон для клиентов, вроде как там все сделано по этим селектам.
поиск по форуму тоже выдает кучу инфы. вот ознакомьтесь с темой и отталкиваясь от нее можно дальше рыть 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']
 

Вложения

  • маил.PNG
    маил.PNG
    90,6 KB · Просмотры: 113
  • маил 2.PNG
    маил 2.PNG
    150,9 KB · Просмотры: 101
Последнее редактирование:
Подскажите как и где подправить .

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, он может указывать на не кликабельный элемент, или пробовать другие варианты клика или через эмуляцию мыши.
 
Помогите с выбором дат на С# кодом .
Вот так работало когда-то
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 проверить.
 
  • Оценить
Реакции: Лёня
Вот так работало когда-то
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 ?
 
  • Оценить
Реакции: Лёня
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 перебрал.
 
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 и Лёня
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));
Спасибо большое, все знчения выбираются!
 

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