string domain = project.Variables["domen"].Value; // переменная с доменом, чисто google/yandex/mail/zennolab без www/зоны/прочего
foreach (var s in instance.AllTabs)
{
if(new Uri(s.URL).Host.Split('.').Reverse().Skip(1).First().Trim().Equals(domain.Trim()))
{
s.SetActive();
return true;
}
}
в телегу (в подписи) скинь шаблон, что на скринеК сожалению не вышло активировать.
Выполнение действия CSharp OwnCode. Последовательность не содержит элементов
string domain = project.Variables["domen"].Value;
try{
instance.AllTabs.FirstOrDefault(x=>new Uri(x.URL).Host.Contains(domain)).SetActive();
}catch{throw new Exception("не найдено вкладки с доменом");}
var names = project.Variables["names"].Value;// в переменной names имена всех подконтрольных вкладок хоть списком, хоть через запятую, как удобно
instance.AllTabs.ToList().ForEach(x=>
{
if(!names.Contains(x.Name))x.Close();
});
Снипет отрабатывает, то что нужно, спасибо!в телегу (в подписи) скинь шаблон, что на скрине
.Contains(domain)) - это не совсем корректный код, я неспроста наговнокодил такую конструкцию:Я так понимаю, что вкладки открываются самостоятельно и не Вы контролируете их открытие. Тогда правильнее будет на каждую "полезную" вкладку вешать свое имя и работать с именами вкладок, и время от времени закрывать лишние и ненужные, а то неизвестно, куда там может увести тот или иной редирект.C#:string domain = project.Variables["domen"].Value; try{ instance.AllTabs.FirstOrDefault(x=>new Uri(x.URL).Host.Contains(domain)).SetActive(); }catch{throw new Exception("не найдено вкладки с доменом");}
Вот так можно позакрывать все неугодные вкладки.
[/CODE]
new Uri(s.URL).Host.Split('.').Reverse().Skip(1).First().Trim().Equals(domain.Trim())
https://1ya.ru/
- доска объявленийhttps://ya.ru/
- поисковикhttps://1ya.ru/
- активировать https://ya.ru/
через .Contains
уже не получится ...Это вполне очевидное замечание, однако, маловероятно, что в бою такое попадется и я решил не усложнять, а сделать упор на то, что лучше постараться работать с именами вкладок. Например, открываешь вкладку с сайтом "site.ru" и назначаешь ей имя "моя вкладка". Потом обращаешься к этой вкладке по имени и никто не мешает возвращаться к проверке на соответствие домена, вдруг, там произошел редирект на "subdomain.site.ru", твой код схавает это, как и мой, впрочем, но это уже другой сайт по сути, а это повлечет за собой другие ошибки. Тут можно уже дальше развивать логику действий, но происходить это будет в нужной вкладке. А, если средиректило, например, на зеркало, находящееся на совершенно другом домене? лишняя вкладка останется висеть открытой и вскоре, возможно, вообще уронит инстанс. Так что, ориентироваться на одну только адресную строку в корне неправильно..Contains(domain)) - это не совсем корректный код, я неспроста наговнокодил такую конструкцию:
ибо нам нужно точное вхождение на домен, как пример:C#:new Uri(s.URL).Host.Split('.').Reverse().Skip(1).First().Trim().Equals(domain.Trim())
https://1ya.ru/
- доска объявлений
https://ya.ru/
- поисковик
находясь наhttps://1ya.ru/
- активироватьhttps://ya.ru/
через.Contains
уже не получится ...
и еще масса вариантов, когда new Uri.Host перед top-level будет иметь несколько точек впереди