C# требуется помощь

runlike

Client
Регистрация
22.09.2015
Сообщения
175
Благодарностей
51
Баллы
28
Есть большой и громоздкий шаблон, который хочется по максимуму оптимизировать с помощью замены экшенов на c#.
Вот пример кода, который удалось создать штатными средствами зенки путем конвертации экшенов в c#
Код:
//ОТКЛЮЧАЕМ ФЛЭШ, ЧИСТИМ КЭШ, КУКИ

instance.UsePlugins = false;
instance.ClearCache();
instance.ClearCookie();

//ПЕРЕХОДИМ НА САЙТ
Tab tab = instance.ActiveTab;
if ((tab.IsVoid) || (tab.IsNull)) return -1;
if (tab.IsBusy) tab.WaitDownloading();
tab.Navigate("https://www.site.ru/", "https://www.yandex.ru/");
if (tab.IsBusy) tab.WaitDownloading();


//КЛИК ВХОД
//КЛИК ВХОД


HtmlElement he = instance.ActiveTab.FindElementByAttribute("a", "innerhtml", "Вход\\ и\\ регистрация", "regexp", 0);
if (he.IsVoid) return -1;
// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);

// Случайная пауза
Random rnd = new Random();
System.Threading.Thread.Sleep(rnd.Next(2, 4) * 1000);


//ВВОД ТЕЛЕФОНА
//ВВОД ТЕЛЕФОНА

HtmlElement he0 = instance.ActiveTab.FindElementByAttribute("input:text", "outerhtml", "placeholder=\"Телефон"", "regexp", 0);
if (he0.IsVoid) return -1;
instance.WaitFieldEmulationDelay();
he0.SetValue(project.Variables["tel"].Value, instance.EmulationLevel, false);

// Случайная пауза
System.Threading.Thread.Sleep(rnd.Next(2, 4) * 1000);


// ВВОД ПАРОЛЯ
// ВВОД ПАРОЛЯ

HtmlElement he1 = instance.ActiveTab.FindElementByAttribute("input:password", "fulltagname", "input:password", "regexp", 0);
if (he1.IsVoid) return -1;
instance.WaitFieldEmulationDelay();
he1.SetValue(project.Variables["Pass"].Value, instance.EmulationLevel, false);

// Случайная пауза
System.Threading.Thread.Sleep(rnd.Next(2, 4) * 1000);


// КЛИК ВОЙТИ
// КЛИК ВОЙТИ

HtmlElement he76 = instance.ActiveTab.FindElementByAttribute("button", "innerhtml", "Войти", "regexp", 0);
if (he76.IsVoid) return -1;
instance.WaitFieldEmulationDelay();
he76.RiseEvent("click", instance.EmulationLevel);


// Случайная пауза
System.Threading.Thread.Sleep(rnd.Next(2, 4) * 1000);

// КЛИК additem
// КЛИК additem

HtmlElement he53 = instance.ActiveTab.FindElementByAttribute("a", "href", "additem", "regexp", 0);
if (he53.IsVoid) return -1;
instance.WaitFieldEmulationDelay();
he53.RiseEvent("click", instance.EmulationLevel);
1. Надо сделать так, чтобы после нажатия войти код не продолжал действовать, пока страница полностью не дозагрузится. Пробовал это сделать с помощью команд
instance.ActiveTab.WaitDownloading();
или
if (tab.IsBusy) tab.WaitDownloading();
Но почему то это ломает код и все перестает работать. Что я делаю не так? Как использовать этот код, или какой еще есть код, чтобы дождать загрузки страницы после клика ?

2. Можно проверить загрузку страницы путем поиска на странице нужного объекта, например
Код:
// Конструктор действий, тип Get
HtmlElement he = instance.ActiveTab.FindElementByAttribute("img", "src", "http://programmersforum.ru/rusprofile.gif", "regexp", 0);
if (he.IsVoid) return -1;

// Получить значение атрибута "height"
string attribute = he.GetAttribute("height");
Как дальше дополнить код, чтобы если элемента нет, то циклично каждые несколько секунд проводилась проверка, пока элемент не загрузится и только потом шло выполнение дальнейшего кода ?

3. Есть еще куча экшенов с обработкой текста (регекс) и логикой(если "AA"!="BB"). Но они почему то штатными средствами зенки не конвертируются в c#. Допустим нам надо взять переменную, регексом из нее вытащить кусок и положить в другую переменную. И потом сравнить новую переменную с начальной. Как это сделать кодом ?

Спасибо откликнувшимся
 

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
Перевод браузерного шаблона на C# бессмыслен.
 
  • Спасибо
Реакции: orka13

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 286
Баллы
113
Перевод браузерного шаблона на C# бессмыслен.
Почему? Куда удобней часть кликов кодом обернуть, чтобы проект меньше места занимал :-) Я так с ВК когда-то делал, вполне успешно.
 

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
Почему? Куда удобней часть кликов кодом обернуть, чтобы проект меньше места занимал :-) Я так с ВК когда-то делал, вполне успешно.
Давай пример того что перевод браузерного шаблона на C# дал прирост производительности .
 

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 286
Баллы
113

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
Нет такого примера, просто кубики меньше места занимали :-)
У C# есть одна большая проблема в зенке.
Это
Тип Время Сообщение
16:16:13 Выполнение действия CSharp OwnCode Произошла одна или несколько ошибок.
 
  • Спасибо
Реакции: zortexx

runlike

Client
Регистрация
22.09.2015
Сообщения
175
Благодарностей
51
Баллы
28
Перевод браузерного шаблона на C# бессмыслен.
Возможно и так. Но мне лично гораздо удобнее заменить 10 кубиков одним на c# и иметь сжатый, удобный шаблон, чем месиво из 500 кубиков, в которых черт ногу сломит, пока найдет нужный.
Вопрос актуален.
 

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
Возможно и так. Но мне лично гораздо удобнее заменить 10 кубиков одним на c# и иметь сжатый, удобный шаблон, чем месиво из 500 кубиков, в которых черт ногу сломит, пока найдет нужный.
Вопрос актуален.
Так лучше писать в предложения и просить что бы сделали возможность собирать кубики в 1.
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Возможно и так. Но мне лично гораздо удобнее заменить 10 кубиков одним на c# и иметь сжатый, удобный шаблон, чем месиво из 500 кубиков, в которых черт ногу сломит, пока найдет нужный.
Вопрос актуален.
Уверяю вас, разместив код большого и громоздкого шаблона в одном экшене вы свою проблему не решите, - наоборот, - создадите несколько новых.

Наиболее эффективно было бы разделить код на логичные этапы и разместить в соответствующих экшенах.

Три года назад я предлагал внедрить возможность группировки экшенов для удобства работы с большими проектами, но даже @rostonix не смог, или не захотел разобраться и понять зачем это нужно. В общем, предложение не встретило положительного отклика. Так что пришлось искать другие варианты и методы работы. Одним из которых стал вариант с экшенами собственного C# кода, разбитыми на логические шаги. Остальное раскрывать не буду, а то мало ли :-)))
 
  • Спасибо
Реакции: orka13 и Шива

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 286
Баллы
113
Уверяю вас, разместив код большого и громоздкого шаблона в одном экшене вы свою проблему не решите, - наоборот, - создадите несколько новых.

Наиболее эффективно было бы разделить код на логичные этапы и разместить в соответствующих экшенах.

Три года назад я предлагал внедрить возможность группировки экшенов для удобства работы с большими проектами, но даже @rostonix не смог, или не захотел разобраться и понять зачем это нужно. В общем, предложение не встретило положительного отклика. Так что пришлось искать другие варианты и методы работы. Одним из которых стал вариант с экшенами собственного C# кода, разбитыми на логические шаги. Остальное раскрывать не буду, а то мало ли :-)))
Я такую штуку 3 раза предлагал :-)
 

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 286
Баллы
113

runlike

Client
Регистрация
22.09.2015
Сообщения
175
Благодарностей
51
Баллы
28
Да я сам уже подобную вещь предлагал, или поддерживал подобную идею о группировке экшенов еще пол года-год назад, не помню. Только воз и ныне там, почему то не считают нужным добавить такую простую, но крайне полезную функцию.

Уверяю вас, разместив код большого и громоздкого шаблона в одном экшене вы свою проблему не решите, - наоборот, - создадите несколько новых.

Наиболее эффективно было бы разделить код на логичные этапы и разместить в соответствующих экшенах.
Вот я примерно так и хочу, объединить часть кубов отвечающих за одну логическую задачу в один c# кубик, чтобы избавиться от лишних нагромождений. Но мешает мое карйне низкое знание c#, из-за которого часть команд я просто не понимаю как реализовать в коде.
 

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 286
Баллы
113
Да я сам уже подобную вещь предлагал, или поддерживал подобную идею о группировке экшенов еще пол года-год назад, не помню. Только воз и ныне там, почему то не считают нужным добавить такую простую, но крайне полезную функцию.



Вот я примерно так и хочу, объединить часть кубов отвечающих за одну логическую задачу в один c# кубик, чтобы избавиться от лишних нагромождений. Но мешает мое карйне низкое знание c#, из-за которого часть команд я просто не понимаю как реализовать в коде.
Если есть 6 тысяч рубликов на саморазвитие, могу порекомендовать отличный курс по зенке, сишарпу и прочим полезным штукам.
 

runlike

Client
Регистрация
22.09.2015
Сообщения
175
Благодарностей
51
Баллы
28
Если есть 6 тысяч рубликов на саморазвитие, могу порекомендовать отличный курс по зенке, сишарпу и прочим полезным штукам.
Саморазвитие это хорошо, почему бы и нет. С удовольствием пройду, когда будет время и финансы.
 

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 286
Баллы
113

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