Подскажите снипет Закрить все вкладки (Tab)

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
379
Баллы
63
Нужно в конце шаблона закрыть все вкладки
Проблема в том что вкладок может бить и 2 и 4. С разными именами

2. Как можно переименовать активную вкладку (Не закрыть текущую и открыть с нужным именем а переименовать)
 

iDnx

Client
Регистрация
06.06.2013
Сообщения
132
Благодарностей
105
Баллы
43
Нужно в конце шаблона закрыть все вкладки
Код:
// close all tabs
instance.CloseAllTabs();
2. Как можно переименовать активную вкладку (Не закрыть текущую и открыть с нужным именем а переименовать)
Переименовывать нельзя.
 
  • Спасибо
Реакции: Rimen и art22

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
379
Баллы
63
а получить имя вкладки с номером 0 можно как то?
Тоесть той вкладки что останенется после закрития всех других
 

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
379
Баллы
63
в чем собственно проблема.
В определенном куске шаблона нужно открывать вкладку, с именем index, если вкладки с таким именем нету то все нормально, а вот если вкладка с таким именем уже есть тогда вместо индекс открывается вкладка index 1 и дальше вся логика шаблона летит ...
Как можно проверить есть ли вкладка с определенным именем. Ну и если ее нету тогда открить уже вкладку.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
instance.AllTabs.Where(t=>t.Name == "index").ToList().ForEach(t=>t.Close());
кот кота в обиде не бросит!
 
Последнее редактирование:

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
379
Баллы
63
чето не получается
Ошибка в действии "CS1061" ""ZennoLab.CommandCenter.Tab" не содержит определение для "Name". Не удалось найти метод расширения "Name", принимающий первый аргумент типа "ZennoLab.CommandCenter.Tab" (пропущена директива using или ссылка на сборку?)". [Строка: 1; Cтолбец: 29]
 

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
379
Баллы
63
а понял вопрос снят сорри
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
instance.GetTabByAddress("popup") - instance.GetTabByAddress("popup-10"), при открытии вкладок присваивается popup по порядку, и в каждой вкладке свои действия, если вдруг вкладка popup-2 не открылась, то следующая открывается под именем popup-2, а в ней все действия допустим popup-3 и получается что все действия останавливаются так же как и весь проект тормознёт, как заранее задать имя вкладкам???
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
как заранее задать имя вкладкам???
если они открываюстя попапами, то никак.
только если замените целенаправленным навигейтом на URL страницы
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
URL не прокатывает, не засчитывается клик нужен, а при сворачивании клик не всегда срабатывает
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Имя задать заранее нельзя. А зачем? Ведь после стандартного попапа вкладка станет активной?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
мне иногда надо допустим 5 вкладок открыть, но иногда любая может не открыться так как в ней задания закончились, и нумерация в самом коде изменится, если вкладка попап 2то в самом коде может быть три, и код не срабатывает, так же как и в экшенах пока не поставишь галочку на активная.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
если вы в коде делаете то делайте через try catch
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
а смысл опять возвращаться назад если попап всё равно не изменится, я уже на клики в некоторых местах переделал, а в С# клик только эта функция instance.ActiveTab.MouseClick??? я что то настраиваю даже иногда не видно выделения что туда кликнуло
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
вы хотите какую то магию: сами не знаете какие попапы открылись, какие нет, не знаете как их идентифицировать, но хотите чтобы постер это знал.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
как это не знаю, если из за этого я и начал на клик переделывать так как попапы не сходятся по открытию, а значит и не выполняются
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
значит проверяйте на страние после открытия нужные данные перед тем как что-то в попапе делать
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
в экшенах есть по имени выставить а есть поставить галку на активная, можно в С# так сделать????
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
instance.ActiveTab.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
кликаем на странице page
HtmlElement he = instance.GetTabByAddress("page").GetDocumentByAddress("0").FindElementByAttribute("a", "href", "http://test", "regexp", 0);
if (he.IsVoid);
открывается вкладка допустим popup-1, а в самом коде уже записано например так;
здесь уже вызываем клик на существующей вкладке
he = instance.GetTabByAddress("popup-3").GetDocumentByAddress("0;_2").FindElementByAttribute("a", "href", "http://test", "regexp", 0);
if (he.IsVoid) return -1;
и если вкладка "popup" не сходится как написано в коде, то на этой странице клик не происходит, а заранее я не могу угадать каким попап она откроется
так же как и в простом экшене если по имени попап не сходится то клик не произойдёт пока не выставишь на активная
instance.ActiveTab. - где именно правильно записать???
 
  • Спасибо
Реакции: iBotovod

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Это альтернатива этому instance.GetTabByAddress("popup-3")
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
это я понял, но если в следующий раз при прохождении кода сама вкладка будет попап-2 то все действия на странице не произойдут, как или чем заменить
instance.GetTabByAddress("popup-3") что бы при любом открывшемся попап действия выполнялись???????
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Ок, повторю снова то что сказал: вы сами задаете логику работы с вкладками. Вы можете ориентироваться на имя вкладки, ориентироваться на активную вкладку, ориентироваться на содержимое вкладки. Программа за вас ничего сама не решает.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
и это я тоже понял, повторюсь что одна любая вкладка может не открыться, и когда в коде дойдёт до попап-4, а вкладка попап-3 то действия не выполнятся, открытую вкладку закрыть нельзя не раньше 5 минут, а за один раз могут и 15 вкладок открыться
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
проверяйте содержимое странице перед действиями
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
а без проверки содержимого, выполнять как в активной вкладке не имея значения какой попап есть такая возможность?????
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute
// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);
System.Threading.Thread.Sleep(2000);
instance.ActiveTab.WaitDownloading();
he = instance.ActiveTab.GetDocumentByAddress("0;_2").FindElementByAttribute
he = instance.ActiveTab.GetDocumentByAddress("0;_2").FindElementByAttribute
he = instance.ActiveTab.GetDocumentByAddress("0;_2").FindElementByAttribute

это я пример не стал всё между строками вносить, почему одно задание при таких данных выполняется не имея значения какой попап, а некоторые нет????? не происходит клик на странице
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
значит элементов нет атрибуты которых используете на этих страницах
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
я с конструктора атрибуты беру на каждой странице новые
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Если не кликает, значит атрибуты для клика не верны. Значит это другая страница, как вариант.
 

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