Выбор из выпадающего списка в вк

bambr32

Client
Регистрация
17.01.2020
Сообщения
33
Благодарностей
6
Баллы
8
Начал изучать зенку недавно, возможно вопрос простой, но победить никак не могу, подскажите, плз.

В группе вконтакте в настройках группы есть возможность выбрать возможность подключить свой RSS. По умолчанию выбрана опция "Выключен", нужно изменить на "Включен" http://joxi.ru/Rmz3o5bUjx8EX2
Стандартными действиями типа click и прочее ничего не получается. Там какой-то как по мне очень хитрый джава скрипт, а я в нем ни бум бум. Как решить данную проблему?
 

nrg8601

Client
Регистрация
22.06.2010
Сообщения
74
Благодарностей
68
Баллы
18
C#:
Tab tab = instance.ActiveTab;

HtmlElement elRss = tab.FindElementByXPath("//div[contains(@id, 'groups_edit_g_rss_button')]/div[contains(@class, 'idd_selected_value')]",0);

// Пауза
System.Threading.Thread.Sleep(1500);

tab.FullEmulationMouseMoveToHtmlElement(elRss);
tab.FullEmulationMouseClick("left","click");

HtmlElement elOn = tab.FindElementByXPath("//div[contains(@id, 'groups_edit_g_rss_button')]/descendant::div[@class='idd_item_name' and text()='Включён']",0);
tab.FullEmulationMouseMoveToHtmlElement(elOn);
tab.FullEmulationMouseClick("left","click");
 
  • Спасибо
Реакции: bambr32

bambr32

Client
Регистрация
17.01.2020
Сообщения
33
Благодарностей
6
Баллы
8
nrg8601, Вы волшебник, огромное спасибо, все заработало!!!
 

bambr32

Client
Регистрация
17.01.2020
Сообщения
33
Благодарностей
6
Баллы
8
А не подскажете еще такой вопрос: хочу выбрать аву для группы, перехожу на страницу выбора изображения, нажимаю на кнопку и ничего не происходит.

При этом при нажатии кнопки "Тестировать" в Конструкторе действий все прекрасно отрабатывает, а при добавлении этого же события в проект ничего не происходит. Находит кнопку, жмет, но окно с выбором файла не появляется. Как такое может быть и как это лечится?

Судя по коду - это обычная кнопка без каких-либо вывертов. Код кнопки <button class="Button Button--primary Button--size-m">Выбрать файл</button>
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 718
Баллы
113
nrg8601, Вы волшебник, огромное спасибо, все заработало!!!
вот только код без проверок на пустые элементы, не очень подходит для нормальной работы.
лучше сделай по аналогии с кодом, но на кубиках, 2 кубика с разными условиями поиска элемента.
 
  • Спасибо
Реакции: nrg8601

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 718
Баллы
113
При этом при нажатии кнопки "Тестировать" в Конструкторе действий все прекрасно отрабатывает, а при добавлении этого же события в проект ничего не происходит. Находит кнопку, жмет, но окно с выбором файла не появляется. Как такое может быть и как это лечится?
Это не надо лечить, это стандартное поведение работы зенки.
окно с выбором файла не должно появляться, иначе какой смысл в автоматизации ?
перед кликом, ты в специальном кубике, Файлы для загрузки, должен указать путь к файлу и после нажатия на кнопку файл автоматически загрузится, без всяких окон.
Все это есть в вики, тебе надо хотя бы пролистать ее, что бы ознакомиться с базовым функционалом программы.
 
  • Спасибо
Реакции: bambr32

nrg8601

Client
Регистрация
22.06.2010
Сообщения
74
Благодарностей
68
Баллы
18
вот только код без проверок на пустые элементы, не очень подходит для нормальной работы.
лучше сделай по аналогии с кодом, но на кубиках, 2 кубика с разными условиями поиска элемента.
Что-то типа такого?
C#:
Tab tab = instance.ActiveTab;

HtmlElement elRss = tab.FindElementByXPath("//div[contains(@id, 'groups_edit_g_rss_button')]/div[contains(@class, 'idd_selected_value')]",0);

// Пауза
System.Threading.Thread.Sleep(1500);
    if (elRss.IsVoid){

        elRss = tab.FindElementByXPath("//div[@id='group_edit_rss']/descendant::div[contains(text(), 'Выключен')]",0);

    }if (elRss.IsVoid){
        
        //Выход по красной ветки
        throw new Exception("Не найден элемент \"Импорт RSS\"");
        
    }
    
    tab.FullEmulationMouseMoveToHtmlElement(elRss);
    tab.FullEmulationMouseClick("left","click");
    
// Пауза
System.Threading.Thread.Sleep(1000);

HtmlElement elOn = tab.FindElementByXPath("//div[@id='groups_edit_g_rss_button']/descendant::div[@class='idd_item_name' and text()='Включён']",0);
    if (elOn.IsVoid){
        
        elOn = tab.FindElementByXPath("//div[contains(@id, 'idd_groups_edit_g_rss_button')]/descendant::div[@id='idd_item_1']",0);
        
    }if (elOn.IsVoid){
        
        //Выход по красной ветки
        throw new Exception("Не найден элемент \"Включён\"");
        
    }
    
    tab.FullEmulationMouseMoveToHtmlElement(elOn);
    tab.FullEmulationMouseClick("left","click");
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 718
Баллы
113
Что-то типа такого?
C#:
Tab tab = instance.ActiveTab;

HtmlElement elRss = tab.FindElementByXPath("//div[contains(@id, 'groups_edit_g_rss_button')]/div[contains(@class, 'idd_selected_value')]",0);

// Пауза
System.Threading.Thread.Sleep(1500);
    if (elRss.IsVoid){

        elRss = tab.FindElementByXPath("//div[@id, 'group_edit_rss']//descendant::div[contains(text(), 'Выключен')]",0);

    }else if(elRss.IsVoid){
       
        //Выход по красной ветки
        throw new Exception("Не найден элемент \"Импорт RSS\"");
       
    }
   
    tab.FullEmulationMouseMoveToHtmlElement(elRss);
    tab.FullEmulationMouseClick("left","click");
   
// Пауза
System.Threading.Thread.Sleep(1000);

HtmlElement elOn = tab.FindElementByXPath("//div[@id, 'groups_edit_g_rss_button']/descendant::div[@class='idd_item_name' and text()='Включён']",0);
    if (elOn.IsVoid){
       
        elOn = tab.FindElementByXPath("//div[contains(@id, 'idd_groups_edit_g_rss_button')]/descendant::div[@id='idd_item_1']",0);
       
    }else if(elOn.IsVoid){
       
        //Выход по красной ветки
        throw new Exception("Не найден элемент \"Включён\"");
       
    }
   
    tab.FullEmulationMouseMoveToHtmlElement(elOn);
    tab.FullEmulationMouseClick("left","click");
уже лучше.
а что это за конструкция такая ?
if (elRss.IsVoid){
}else if(elRss.IsVoid){
}
ну очень странная....
 

nrg8601

Client
Регистрация
22.06.2010
Сообщения
74
Благодарностей
68
Баллы
18
Исправил
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 718
Баллы
113
:ca:
я думаю так по логичнее будет ?
if (elRss.IsVoid){
// тута НЕТ элемента
}else{
// тута он ЕСТЬ
}

а вообще стандартная проверка это
Tab tab = instance.ActiveTab;
HtmlElement elRss = tab.FindElementByXPath("//div[contains(@id, 'groups_edit_g_rss_button')]/div[contains(@class, 'idd_selected_value')]",0);
if (he.IsVoid) throw new Exception("Не найден элемент \"Импорт RSS\""); //Выход по красной ветки
// тута работаем с элементом
 
  • Спасибо
Реакции: nrg8601

bambr32

Client
Регистрация
17.01.2020
Сообщения
33
Благодарностей
6
Баллы
8
Это не надо лечить, это стандартное поведение работы зенки.
окно с выбором файла не должно появляться, иначе какой смысл в автоматизации ?
перед кликом, ты в специальном кубике, Файлы для загрузки, должен указать путь к файлу и после нажатия на кнопку файл автоматически загрузится, без всяких окон.
Все это есть в вики, тебе надо хотя бы пролистать ее, что бы ознакомиться с базовым функционалом программы.
Разобрался, спасибо! Мануал читал, но в нем, честно говоря, не всегда понятно, где что искать. Но в финале мануал+ютуб помогли решить вопрос
 

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