Выпадающий список на outlook.live.com

WWWorm

Client
Регистрация
29.08.2015
Сообщения
57
Благодарностей
15
Баллы
8
Не могу правильно выбрать значение в выпадающем списке по адресу

Нужно выбрать русский язык, при выборе руками появляется внизу кнопка "Сохранить". При выборе зенкой этой кнопки нет.
Видимо какой-то скрипт не отрабатывает.
Пробовал так
Вот так пробовал:
// Входные параметры
string data_search = @"value=""ru-RU""";
string xpath = "//select[@aria-labelledby='cultureLabelId']";
string xpath_opt = ".//option";

// Находим элемент select
var selectElement = instance.ActiveTab.FindElementByXPath(xpath, 0);

// Получаем список опций
List<string> optionsList = new List<string>();
try
{
    optionsList = ZennoPoster.Parser.ParseByXpath(selectElement.OuterHtml, xpath_opt, "OuterHtml").ToList();
}
catch
{
    // Обработка ошибки, если не удалось получить список опций
   // Project.SendWarning("Не удалось получить список опций");
    //return;
}

// Ищем нужную опцию и устанавливаем её
int optionIndex = 0;
foreach (string option in optionsList)
{
    if (option.IndexOf(data_search) != -1)
    {
        // Устанавливаем значение
        selectElement.SetValue(optionIndex.ToString(), "None", false);
        
        // Перемещаем курсор к элементу
        instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(selectElement);
        
        // Кликаем левой кнопкой мыши
        instance.ActiveTab.FullEmulationMouseClick("left", "click");
        
        // Ждем некоторое время
        instance.WaitFieldEmulationDelay();
        
        // Нажимаем Enter для подтверждения выбора
        instance.SendText("{ENTER}", 15);
        
     //  Project.SendWarning("Опция ru-RU успешно выбрана");
      //  return;
    }
    optionIndex++;
}

// Если опция не найдена
//Project.SendWarning("Опция ru-RU не найдена");
И так:
//---- входные параметры -------------------------------------------------
string data_seach     = @"value=""ru-RU""";
string xpath         = "//select[@aria-labelledby='cultureLabelId']";
string xpath_opt     = ".//option";
//-------------------------------------------------------------------------
string result = "" ; int id1=0; List<string> lst_Find = new List<string>();
var he2= instance.ActiveTab.FindElementByXPath(xpath,0);
try { lst_Find = ZennoPoster.Parser.ParseByXpath(he2.OuterHtml, xpath_opt, "OuterHtml" ).ToList(); } catch{}
if (lst_Find.Count > 0) {
    foreach (string he_opt in lst_Find) {
        if (he_opt.IndexOf(data_seach) != -1) {
            he2.SetValue(id1.ToString(), "None", false);
            return 0;
        }
        id1++;
    }
}
Пробовал кликать по //select[@aria-labelledby='cultureLabelId'] и затем по //option[@value="ru-RU"].

Ничего не помогло. Может кто подскажет как победить данный список.
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93
C#:
var el = instance.ActiveTab.FindElementByXPath("//select[@aria-labelledby='cultureLabelId']", 0);
el.SetValue(ZennoPoster.Parser.ParseByXpath(el.OuterHtml, ".//option", "OuterHtml").ToList().FindIndex(x => x.Contains(@"value=""ru-RU""")).ToString(), "None", false);
el.RiseEvent("onchange", "Full");
 
  • Спасибо
Реакции: WWWorm

WWWorm

Client
Регистрация
29.08.2015
Сообщения
57
Благодарностей
15
Баллы
8
C#:
var el = instance.ActiveTab.FindElementByXPath("//select[@aria-labelledby='cultureLabelId']", 0);
el.SetValue(ZennoPoster.Parser.ParseByXpath(el.OuterHtml, ".//option", "OuterHtml").ToList().FindIndex(x => x.Contains(@"value=""ru-RU""")).ToString(), "None", false);
el.RiseEvent("onchange", "Full");
Все заработало и быстро! Спасибо)
 
  • Спасибо
Реакции: Ilshakin

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