Код С#

Gooldbee

Client
Регистрация
16.05.2019
Сообщения
224
Благодарностей
25
Баллы
28
Помогите составить код пожалуйста, бьюсь 3 час)
Есть код

// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("div", "class", "bet\\ roboto-font\\ padding\\ border-green", "regexp", Convert.ToInt32(project.Variables["olmp"].Value));
if (he.IsVoid) return -1;
else
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);

Если не находит элемент возврощает -1

нашел код для счётчика
project.Variables["olmp"].Value = Convert.ToString(Convert.ToInt32(project.Variables["olmp"].Value)+1);

Хочу сделать чтобы действие выполнялось 30 раз с присвоением к переменной +1
и после 30 выдавал ошибку (
То есть должен кликнуть 30 раз, кликнул присвоил +1 и т.д
 

volody00

Client
Регистрация
06.09.2016
Сообщения
902
Благодарностей
934
Баллы
93
C#:
for(int i=0;i<29;i++)
{
    HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("div", "class", "bet\\ roboto-font\\ padding\\ border-green", "regexp", Convert.ToInt32(project.Variables["olmp"].Value));
    if (he.IsVoid) return -1;
    else he.RiseEvent("click", instance.EmulationLevel);
    
    project.Variables["olmp"].Value = Convert.ToString(Convert.ToInt32(project.Variables["olmp"].Value)+1);
    Thread.Sleep(1000); //пауза
}
 
  • Спасибо
Реакции: Gooldbee

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
404
Баллы
63
C#:
for(int i=0; i<30; i++)
{
    // Конструктор действий, тип RiseEvent
    HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("div", "class", "bet\\ roboto-font\\ padding\\ border-green", "regexp", Convert.ToInt32(project.Variables["olmp"].Value));
    if (he.IsVoid) return -1;
    else
    // Вызвать событие "click"
    he.RiseEvent("click", instance.EmulationLevel);
    project.Variables["olmp"] = i.ToString();
}
throw new Exception("Кликнули 30 раз");
 
  • Спасибо
Реакции: Gooldbee

Gooldbee

Client
Регистрация
16.05.2019
Сообщения
224
Благодарностей
25
Баллы
28
C#:
for(int i=0;i<29;i++)
{
    HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("div", "class", "bet\\ roboto-font\\ padding\\ border-green", "regexp", Convert.ToInt32(project.Variables["olmp"].Value));
    if (he.IsVoid) return -1;
    else he.RiseEvent("click", instance.EmulationLevel);
   
    project.Variables["olmp"].Value = Convert.ToString(Convert.ToInt32(project.Variables["olmp"].Value)+1);
    Thread.Sleep(1000); //пауза
}
Volody спасибо, осталось только разобраться с тем что переменая олимп меняется, после выполнения на +30 . и если переменная олимп к примеру 80 код выдёт в лог -1
 

Gooldbee

Client
Регистрация
16.05.2019
Сообщения
224
Благодарностей
25
Баллы
28
C#:
for(int i=0; i<30; i++)
{
    // Конструктор действий, тип RiseEvent
    HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("div", "class", "bet\\ roboto-font\\ padding\\ border-green", "regexp", Convert.ToInt32(project.Variables["olmp"].Value));
    if (he.IsVoid) return -1;
    else
    // Вызвать событие "click"
    he.RiseEvent("click", instance.EmulationLevel);
    project.Variables["olmp"] = i.ToString();
}
throw new Exception("Кликнули 30 раз");
Ваш выдёт
Тип Время Сообщение
05:37:07 Компиляция кода Ошибка в действии "CS0200" "Property or indexer 'ILocalVariables.this[string]' cannot be assigned to -- it is read only". [Строка: 9; Cтолбец: 5]
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
404
Баллы
63
Ага, забыл указать Value в переменой проекта
C#:
for(int i=0; i<30; i++)
{
    // Конструктор действий, тип RiseEvent
    HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("div", "class", "bet\\ roboto-font\\ padding\\ border-green", "regexp", Convert.ToInt32(project.Variables["olmp"].Value));
    if (he.IsVoid) return -1;
    else
    // Вызвать событие "click"
    he.RiseEvent("click", instance.EmulationLevel);
    project.Variables["olmp"].Value = i.ToString();
}
throw new Exception("Кликнули 30 раз");
 

Gooldbee

Client
Регистрация
16.05.2019
Сообщения
224
Благодарностей
25
Баллы
28
Ага, забыл указать Value в переменой проекта
C#:
for(int i=0; i<30; i++)
{
    // Конструктор действий, тип RiseEvent
    HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("div", "class", "bet\\ roboto-font\\ padding\\ border-green", "regexp", Convert.ToInt32(project.Variables["olmp"].Value));
    if (he.IsVoid) return -1;
    else
    // Вызвать событие "click"
    he.RiseEvent("click", instance.EmulationLevel);
    project.Variables["olmp"].Value = i.ToString();
}
throw new Exception("Кликнули 30 раз");
Семафон, не подскажешь как решить? =( переменная олимп держит в себе номер совпадения, почучается что если он больше 30 то код не выполняется. грубо говоря если он нашел элемент он кликает 30 раз потом ждёт опять появление и опять 30 раз в итоге олимп будет уже 60
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
404
Баллы
63
Вы опишите логику, а то не понятно что вы делаете и что хотите получить. Мой код не может присвоить
project.Variables["olmp"].Value
значение больше 29, т.к. в нее пишется номер итерации цикла (которых у нас ровно 30 — от 0 до 29). И каждое выполнение этого цикла будет затирать старые значения. Если вы пишете в olmp еще что-то из других мест, то приведите полный код записи в переменную olmp.
 
  • Спасибо
Реакции: Gooldbee

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