Бесплатные снипеты на заказ

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
Добрый день есть код
Код:
// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("button", "class", "joomly", "regexp", 0);
if (he.IsVoid) return -1;

// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);
Это тот код который выдается в меню при клике на кубик ( конвертировать в С#)
Но работает код не так как кубик.
Если кубик выходит по ошибки если не верный атрибут, то код по ошибки не выходит при неправильном атрибуте элемента.
Внимание! Вопрос, как подправить код чтоб при неправильном атрибуте, кубик с кодом выходил по красной ветки.
А еще вопрос как все значение (FindElementByAttribute("button", "class", "joomly", "regexp", 0); ) можно вставлять из переменной, а еще лучше из списка с удалением, пока не попадется подходящий атрибут.
 

Ultra Proxy

Новичок
Регистрация
23.06.2018
Сообщения
26
Благодарностей
2
Баллы
3
Подскажите как решить проблему
приходит ряд цифр
2344
4525
535
9765
Это пример, как оставить только первые 2 цифры
ЗЫ Цифры приходят с сервиса распознавания CapMonster Cloud
Может можно решить сниппетом ?
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 183
Баллы
113
Добрый день есть код
Код:
// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("button", "class", "joomly", "regexp", 0);
if (he.IsVoid) return -1;

// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);
Это тот код который выдается в меню при клике на кубик ( конвертировать в С#)
Но работает код не так как кубик.
Если кубик выходит по ошибки если не верный атрибут, то код по ошибки не выходит при неправильном атрибуте элемента.
Внимание! Вопрос, как подправить код чтоб при неправильном атрибуте, кубик с кодом выходил по красной ветки.
А еще вопрос как все значение (FindElementByAttribute("button", "class", "joomly", "regexp", 0); ) можно вставлять из переменной, а еще лучше из списка с удалением, пока не попадется подходящий атрибут.
Для переменных и с ошибкой при не нахождении:
C#:
// Конструктор действий, тип RiseEvent
// Объявляем перемененные, которые должны быть уже созданы в проекте:
string tags = project.Variables["tags"].Value;
string attrName = project.Variables["attrName"].Value;
string attrValue = project.Variables["attrValue"].Value;
int number = Int32.Parse(project.Variables["number"].Value);
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute(tags, attrName, attrValue, "regexp", number);
// возвращаем ошибку в случае не нахождения элемента:
if (he.IsVoid) throw new Exception("- нифига не нашли!");

// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);
return "нашли";
остальное сча доделаю и подредактирую пост...
UPD:
C#:
// Конструктор действий, тип RiseEvent
// Объявляем перемененные, которые должны быть уже созданы в проекте:
string tags = project.Variables["tags"].Value;
string attrName = project.Variables["attrName"].Value;
string attrValue = "";
int number = Int32.Parse(project.Variables["number"].Value);
// Объявляем наш список с значением элементов, строки которого подставим в [attrValue]. Под "Список 1" можете подставить свой список из проекта:
var Spisok_1 = project.Lists["Список 1"];

// Запускаем цикл перебора всех строк в  нашем списке:
for (int i = 0; i < Spisok_1.Count; i++) {
    // Подставляем строку списка в [attrValue]:
    attrValue = Spisok_1[i];
    HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute(tags, attrName, attrValue, "regexp", number);
    // завершаем текущий круг цикла и переходим к следующему в случае не нахождения элемента:
    if (he.IsVoid) continue;
  
    // Задержка эмуляции
    instance.WaitFieldEmulationDelay();
    // Вызвать событие "click"
    he.RiseEvent("click", instance.EmulationLevel);
    // выходим из цикла и всего кода после нахождения и клика:
    return "нашли, совпало [attrValue]: " + attrValue + ", оно в списке под номером: " + i;
}
//А раз перебрали весь список и не нашли элемента, то выходим по ошибке:
throw new Exception("- нифига не нашли!");
 
Последнее редактирование:
  • Спасибо
Реакции: speaker

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 183
Баллы
113
Подскажите как решить проблему
приходит ряд цифр
2344
4525
535
9765
Это пример, как оставить только первые 2 цифры
ЗЫ Цифры приходят с сервиса распознавания CapMonster Cloud
Может можно решить сниппетом ?
C#:
return System.Text.RegularExpressions.Regex.Match(project.Variables["Get_Otvet"].Value, @"^.{2}").ToString();
Где [Get_Otvet] - наша переменная с текстом.
 
  • Спасибо
Реакции: Ultra Proxy

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
orka13
Спасибо огромное!!!!!!;-):az:
 

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
Как правильно сделать, что бы вставлять полный путь (xpath) ИЗ переменной
Код:
string tags = project.Variables["text"].Value;
string tags = project.Variables["xpath"].Value;
HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath, 0);
he.SetValue(project.Variables["text"].Value, "None", true);
А то как только добавляю строчку кода
string tags = project.Variables["xpath"].Value;
Кубик ошибку выдает.
А изначально строчка выглядела
var xpath = "//textarea[@aria-label='lalala']";
 
Последнее редактирование:

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Как правильно сделать, что бы вставлять полный путь (xpath) ИЗ переменной
Код:
string tags = project.Variables["text"].Value;
string tags = project.Variables["xpath"].Value;
HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath, 0);
he.SetValue(project.Variables["text"].Value, "None", true);
А то как только добавляю строчку кода
string tags = project.Variables["xpath"].Value;
Кубик ошибку выдает.
C#:
string text = project.Variables["text"].Value;
string xpath = project.Variables["xpath"].Value;
HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath, 0);
he.SetValue(text, "None", true);
 

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
ssXXXss Спасибо, большое.
 

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
А Можно ли сначала Вставить SetValue значение из переменной , а потом взять GetValue значение и вставить в переменную ?
Код:
string text = project.Variables["gettext"].Value;
string text = project.Variables["text"].Value;
string xpath = project.Variables["xpath"].Value;
HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath, 0);
he.SetValue(text, "None", true);
he.GetValue(gettext, "None", true);
В таком виде код не работает.
 

ssXXXss

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

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28

ssXXXss

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

ssXXXss

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

ssXXXss

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

2019-07-22_194038.png

вроде всё ясно разжованно, показывает ошибку строки, в чём ошибка
 

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
мы тоже понимаем что вроде нетрудная задача чтобы помочь, но если ты сам даже не хочешь разобрать простейшую ошибку то ты получается всегда будешь обращаться по пустякам
Согласен! Очевидную ошибку я подправил получился код
Код:
string gettext = project.Variables["gettext"].Value;
string text = project.Variables["text"].Value;
string xpath = project.Variables["xpath"].Value;
HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath, 0);
he.SetValue(text, "None", true);
he.GetValue(gettext, "None", true);
Но в логе такая ошибка вылазит
Компиляция кода Ошибка в действии "CS1501" "Ни одна из перегрузок метода "GetValue" не принимает "3" аргументов". [Строка: 5; Cтолбец: 1]
Этот косяк я уже не в силах исправить.
 

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
Вероятно чтоб взять Get, нужно юзать другой метод, явно не такой he.GetValue(gettext, "None", true);
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Согласен! Очевидную ошибку я подправил получился код
Код:
string gettext = project.Variables["gettext"].Value;
string text = project.Variables["text"].Value;
string xpath = project.Variables["xpath"].Value;
HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath, 0);
he.SetValue(text, "None", true);
he.GetValue(gettext, "None", true);
Но в логе такая ошибка вылазит
Компиляция кода Ошибка в действии "CS1501" "Ни одна из перегрузок метода "GetValue" не принимает "3" аргументов". [Строка: 5; Cтолбец: 1]
Этот косяк я уже не в силах исправить.
а почему он должен принимать 3 аргумента, если SetValue принимает 4 аргумента

2019-07-22_194859.png
то GetValue принимает 1 аргумент

2019-07-22_194927.png
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Вероятно чтоб взять Get, нужно юзать другой метод, явно не такой he.GetValue(gettext, "None", true);
видимо тебе надо это, я с браузерными проектами очень мало работаю так что я в них не профи
C#:
// Получить значение атрибута "innertext"
string attribute = he.GetAttribute("innertext");
 

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
видимо тебе надо это, я с браузерными проектами очень мало работаю так что я в них не профи
C#:
// Получить значение атрибута "innertext"
string attribute = he.GetAttribute("innertext");
Попробую спасибо.
 

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
Вот
Код:
string gettext = project.Variables["gettext"].Value;
string text = project.Variables["text"].Value;
string xpath = project.Variables["xpath"].Value;
HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath, 0);
he.SetValue(text, "None", true);
string attribute = he.GetAttribute("value");
project.Variables["gettext"].Value = attribute;
такой код юзаю, значение устанавливается Set.
А вот Get не берется, почему это может быть ?
 

Nord

Client
Регистрация
22.03.2012
Сообщения
2 404
Благодарностей
1 469
Баллы
113
Привет.

Есть ли у кого заготовка для реализации такого -
В переменой лежит число вида - 1-3 знака, точка, далее дробная часть от 1 до 6 знаков.
768.4356
121.121123
92.09
-5.1
и тд

Нужно при получении такой строки привести ее в канонический вид - чтоб после точки было строго 6 знаков, если меньше - добавляем нули.

768.435600
121.121123
92.090000
-5.100000

Сейчас только костыли в голове - отделяем дробную часть в переменную, while длинна этой переменной меньше 6, то добавляем к ней "0" ( как к string).

А теперь намекните направление, как это по правильному реализовать =)
 

Alex733

Client
Регистрация
27.11.2017
Сообщения
330
Благодарностей
243
Баллы
43
Приблизительно так:
C#:
string  number  =  project.Variables["number"].Value;
return  double.Parse ( number.Replace(".",",") ).ToString("0.000000");
 

up_lvl

Client
Регистрация
02.09.2014
Сообщения
131
Благодарностей
52
Баллы
28
Код:
var page_id = project.Variables["page_id"].Value;
project.Variables["result"].Value = @"{""rp_author"":""{\""name\"":\""author\"",\""args\"":\"""+page_id+"\""}""}";
Подмогите плз с вставкой переменной в экранированый json. Пример выше НЕрабочий, я уже затерялся в комбинациях кавычек и прошу помощи.
 

Alex733

Client
Регистрация
27.11.2017
Сообщения
330
Благодарностей
243
Баллы
43
Так попробуй:
C#:
var page_id = project.Variables["page_id"].Value;
project.Variables["result"].Value = @"{""rp_author"":{""name"":""author"",""args"":"""+page_id+@"""}}" ;
 
  • Спасибо
Реакции: up_lvl

dafaroff

Client
Регистрация
03.05.2011
Сообщения
76
Благодарностей
137
Баллы
33
Код:
var page_id = project.Variables["page_id"].Value;
project.Variables["result"].Value = @"{""rp_author"":""{\""name\"":\""author\"",\""args\"":\"""+page_id+"\""}""}";
Подмогите плз с вставкой переменной в экранированый json. Пример выше НЕрабочий, я уже затерялся в комбинациях кавычек и прошу помощи.
У тебя json неправильный, по идее, на выходе должно быть так
Код:
{"rp_author":{"name":"author","args":"value"}}
а у тебя получится
Код:
{"rp_author":"{"name":"author","args":"value"}"}
Чтоб не мучатся с json, я обычно вставляю в кубике
https://prnt.sc/oozo50
а потом переменную использую в c# коде
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
C#:
var page_id = "test";
return "{\"rp_author\":{\"name\":\"author\",\"args\":\"" + page_id + "\"}}";
 

up_lvl

Client
Регистрация
02.09.2014
Сообщения
131
Благодарностей
52
Баллы
28
Нюанс именно в том что нужно с экранированным json'ом работать внутри rp_author. На кубиках и я могу, только у меня шаб разрастётся, а это только частный случай я скинул.

Спасибо @Alex733 . Подправил под то что нужно
Код:
var page_id = project.Variables["page_id"].Value;
project.Variables["result"].Value = @"{""rp_author"":""{\""name\"":\""author\"",\""args\"":\"""+page_id+@"\""}""}";
Результат {"rp_author":"{\"name\":\"author\",\"args\":\"123\"}"}, то что мне нужно.
 

idleSSS

Новичок
Регистрация
12.02.2019
Сообщения
28
Благодарностей
3
Баллы
3
Добрый день!

Можете подсказать снипет для загрузки файла на страницу?
Через кубики грузится (выбираем файл, кликаем по ссылке для загрузки),а в коде как реализовать нигде не могу найти.
 

inotoxic

Client
Регистрация
20.04.2015
Сообщения
354
Благодарностей
164
Баллы
43

idleSSS

Новичок
Регистрация
12.02.2019
Сообщения
28
Благодарностей
3
Баллы
3
Я читал эту ветку и ничего полезного не нашёл.
Вот например я указываю на нужный файл, а как мне его подгрузить по найденной ссылке??
C#:
// указываем на файл в директории проекта
instance.SetFileUploadPolicy("ok", "");
instance.SetFilesForUpload(project.Path + "Файл.pdf");
// Находим элемент загрузки (кнопка)
HtmlElement he13 = instance.ActiveTab.FindElementByXPath("//td[text()[normalize-space()='ТЕКСТ']]//parent::tr/td[2]/div//div/form", 0);
// Задержка эмуляции
//instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
//he13.RiseEvent("click", instance.EmulationLevel);
Как мне прописать, чтобы загрузка файла была в найденный элемент??
 

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