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

  • Автор темы Автор темы CSS
  • Дата начала Дата начала
Добрый день есть код
Код:
Развернуть Свернуть Копировать
// Конструктор действий, тип 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); ) можно вставлять из переменной, а еще лучше из списка с удалением, пока не попадется подходящий атрибут.
 
Подскажите как решить проблему
приходит ряд цифр
2344
4525
535
9765
Это пример, как оставить только первые 2 цифры
ЗЫ Цифры приходят с сервиса распознавания CapMonster Cloud
Может можно решить сниппетом ?
 
Добрый день есть код
Код:
Развернуть Свернуть Копировать
// Конструктор действий, тип 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
Подскажите как решить проблему
приходит ряд цифр
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
Как правильно сделать, что бы вставлять полный путь (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']";
 
Последнее редактирование:
Как правильно сделать, что бы вставлять полный путь (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);
 
А Можно ли сначала Вставить 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);
В таком виде код не работает.
 
не ужели трудно посмотреть в чём была твоя ошибка, да и лог для кого ?
 
мы тоже понимаем что вроде нетрудная задача чтобы помочь, но если ты сам даже не хочешь разобрать простейшую ошибку то ты получается всегда будешь обращаться по пустякам
 
  • Спасибо
Реакции: samsonnn
даже и английский ни надо знать

2019-07-22_194038.png

вроде всё ясно разжованно, показывает ошибку строки, в чём ошибка
 
мы тоже понимаем что вроде нетрудная задача чтобы помочь, но если ты сам даже не хочешь разобрать простейшую ошибку то ты получается всегда будешь обращаться по пустякам
Согласен! Очевидную ошибку я подправил получился код
Код:
Развернуть Свернуть Копировать
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]
Этот косяк я уже не в силах исправить.
 
Вероятно чтоб взять Get, нужно юзать другой метод, явно не такой he.GetValue(gettext, "None", true);
 
Согласен! Очевидную ошибку я подправил получился код
Код:
Развернуть Свернуть Копировать
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
 
Вероятно чтоб взять Get, нужно юзать другой метод, явно не такой he.GetValue(gettext, "None", true);
видимо тебе надо это, я с браузерными проектами очень мало работаю так что я в них не профи
C#:
Развернуть Свернуть Копировать
// Получить значение атрибута "innertext"
string attribute = he.GetAttribute("innertext");
 
видимо тебе надо это, я с браузерными проектами очень мало работаю так что я в них не профи
C#:
Развернуть Свернуть Копировать
// Получить значение атрибута "innertext"
string attribute = he.GetAttribute("innertext");
Попробую спасибо.
 
Вот
Код:
Развернуть Свернуть Копировать
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 не берется, почему это может быть ?
 
Привет.

Есть ли у кого заготовка для реализации такого -
В переменой лежит число вида - 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).

А теперь намекните направление, как это по правильному реализовать =)
 
Приблизительно так:
C#:
Развернуть Свернуть Копировать
string  number  =  project.Variables["number"].Value;
return  double.Parse ( number.Replace(".",",") ).ToString("0.000000");
 
Код:
Развернуть Свернуть Копировать
var page_id = project.Variables["page_id"].Value;
project.Variables["result"].Value = @"{""rp_author"":""{\""name\"":\""author\"",\""args\"":\"""+page_id+"\""}""}";

Подмогите плз с вставкой переменной в экранированый json. Пример выше НЕрабочий, я уже затерялся в комбинациях кавычек и прошу помощи.
 
Так попробуй:
C#:
Развернуть Свернуть Копировать
var page_id = project.Variables["page_id"].Value;
project.Variables["result"].Value = @"{""rp_author"":{""name"":""author"",""args"":"""+page_id+@"""}}" ;
 
  • Спасибо
Реакции: up_lvl
Код:
Развернуть Свернуть Копировать
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# коде
 
C#:
Развернуть Свернуть Копировать
var page_id = "test";
return "{\"rp_author\":{\"name\":\"author\",\"args\":\"" + page_id + "\"}}";
 
Нюанс именно в том что нужно с экранированным 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\"}"}, то что мне нужно.
 
Добрый день!

Можете подсказать снипет для загрузки файла на страницу?
Через кубики грузится (выбираем файл, кликаем по ссылке для загрузки),а в коде как реализовать нигде не могу найти.
 
Я читал эту ветку и ничего полезного не нашёл.
Вот например я указываю на нужный файл, а как мне его подгрузить по найденной ссылке??
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);
Как мне прописать, чтобы загрузка файла была в найденный элемент??
 

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