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

speaker

Client
Joined
Oct 13, 2012
Messages
287
Reaction score
45
Points
28
Добрый день есть код
Code:
// Конструктор действий, тип 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

Новичок
Joined
Jun 23, 2018
Messages
26
Reaction score
2
Points
3
Подскажите как решить проблему
приходит ряд цифр
2344
4525
535
9765
Это пример, как оставить только первые 2 цифры
ЗЫ Цифры приходят с сервиса распознавания CapMonster Cloud
Может можно решить сниппетом ?
 

orka13

Client
Joined
May 7, 2015
Messages
2,180
Reaction score
2,191
Points
113
Добрый день есть код
Code:
// Конструктор действий, тип 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("- нифига не нашли!");
 
Last edited:
  • Thank you
Reactions: speaker

orka13

Client
Joined
May 7, 2015
Messages
2,180
Reaction score
2,191
Points
113
Подскажите как решить проблему
приходит ряд цифр
2344
4525
535
9765
Это пример, как оставить только первые 2 цифры
ЗЫ Цифры приходят с сервиса распознавания CapMonster Cloud
Может можно решить сниппетом ?
C#:
return System.Text.RegularExpressions.Regex.Match(project.Variables["Get_Otvet"].Value, @"^.{2}").ToString();
Где [Get_Otvet] - наша переменная с текстом.
 
  • Thank you
Reactions: Ultra Proxy

speaker

Client
Joined
Oct 13, 2012
Messages
287
Reaction score
45
Points
28
orka13
Спасибо огромное!!!!!!;-):az:
 

speaker

Client
Joined
Oct 13, 2012
Messages
287
Reaction score
45
Points
28
Как правильно сделать, что бы вставлять полный путь (xpath) ИЗ переменной
Code:
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']";
 
Last edited:

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
Как правильно сделать, что бы вставлять полный путь (xpath) ИЗ переменной
Code:
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
Joined
Oct 13, 2012
Messages
287
Reaction score
45
Points
28
ssXXXss Спасибо, большое.
 

speaker

Client
Joined
Oct 13, 2012
Messages
287
Reaction score
45
Points
28
А Можно ли сначала Вставить SetValue значение из переменной , а потом взять GetValue значение и вставить в переменную ?
Code:
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
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
не ужели трудно посмотреть в чём была твоя ошибка, да и лог для кого ?
 

speaker

Client
Joined
Oct 13, 2012
Messages
287
Reaction score
45
Points
28
не ужели трудно посмотреть в чём была твоя ошибка, да и лог для кого ?
Не ругайтесь, плохо когда не знаешь, да еще и забудешь.:bt:
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
Не ругайтесь, плохо когда не знаешь, да еще и забудешь.:bt:
ну так ты в лог загляни если забыл, скопируй да в переводчик засунь если не знаешь инглиш, все так учатся
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
мы тоже понимаем что вроде нетрудная задача чтобы помочь, но если ты сам даже не хочешь разобрать простейшую ошибку то ты получается всегда будешь обращаться по пустякам
 
  • Thank you
Reactions: samsonnn

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
даже и английский ни надо знать

2019-07-22_194038.png

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

speaker

Client
Joined
Oct 13, 2012
Messages
287
Reaction score
45
Points
28
мы тоже понимаем что вроде нетрудная задача чтобы помочь, но если ты сам даже не хочешь разобрать простейшую ошибку то ты получается всегда будешь обращаться по пустякам
Согласен! Очевидную ошибку я подправил получился код
Code:
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
Joined
Oct 13, 2012
Messages
287
Reaction score
45
Points
28
Вероятно чтоб взять Get, нужно юзать другой метод, явно не такой he.GetValue(gettext, "None", true);
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
Согласен! Очевидную ошибку я подправил получился код
Code:
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
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
Вероятно чтоб взять Get, нужно юзать другой метод, явно не такой he.GetValue(gettext, "None", true);
видимо тебе надо это, я с браузерными проектами очень мало работаю так что я в них не профи
C#:
// Получить значение атрибута "innertext"
string attribute = he.GetAttribute("innertext");
 

speaker

Client
Joined
Oct 13, 2012
Messages
287
Reaction score
45
Points
28
видимо тебе надо это, я с браузерными проектами очень мало работаю так что я в них не профи
C#:
// Получить значение атрибута "innertext"
string attribute = he.GetAttribute("innertext");
Попробую спасибо.
 

speaker

Client
Joined
Oct 13, 2012
Messages
287
Reaction score
45
Points
28
Вот
Code:
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
Joined
Mar 22, 2012
Messages
2,414
Reaction score
1,481
Points
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
Joined
Nov 27, 2017
Messages
339
Reaction score
244
Points
43
Приблизительно так:
C#:
string  number  =  project.Variables["number"].Value;
return  double.Parse ( number.Replace(".",",") ).ToString("0.000000");
 

up_lvl

Client
Joined
Sep 2, 2014
Messages
133
Reaction score
54
Points
28
Code:
var page_id = project.Variables["page_id"].Value;
project.Variables["result"].Value = @"{""rp_author"":""{\""name\"":\""author\"",\""args\"":\"""+page_id+"\""}""}";
Подмогите плз с вставкой переменной в экранированый json. Пример выше НЕрабочий, я уже затерялся в комбинациях кавычек и прошу помощи.
 

Alex733

Client
Joined
Nov 27, 2017
Messages
339
Reaction score
244
Points
43
Так попробуй:
C#:
var page_id = project.Variables["page_id"].Value;
project.Variables["result"].Value = @"{""rp_author"":{""name"":""author"",""args"":"""+page_id+@"""}}" ;
 
  • Thank you
Reactions: up_lvl

dafaroff

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

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
C#:
var page_id = "test";
return "{\"rp_author\":{\"name\":\"author\",\"args\":\"" + page_id + "\"}}";
 

up_lvl

Client
Joined
Sep 2, 2014
Messages
133
Reaction score
54
Points
28
Нюанс именно в том что нужно с экранированным json'ом работать внутри rp_author. На кубиках и я могу, только у меня шаб разрастётся, а это только частный случай я скинул.

Спасибо @Alex733 . Подправил под то что нужно
Code:
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

Новичок
Joined
Feb 12, 2019
Messages
28
Reaction score
3
Points
3
Добрый день!

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

inotoxic

Client
Joined
Apr 20, 2015
Messages
354
Reaction score
164
Points
43

idleSSS

Новичок
Joined
Feb 12, 2019
Messages
28
Reaction score
3
Points
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);
Как мне прописать, чтобы загрузка файла была в найденный элемент??
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)