Последовательный поиск элементов на странице и нажатие на них

SVAB

Client
Регистрация
07.08.2022
Сообщения
17
Благодарностей
0
Баллы
1
Увидел в одном тг канале работу зенопостерского шаблона.

он прыгал по элементам, будто он нажимал на таб (то есть последовательно сверху вниз)
и на нужно элементе он останавливался и нажимал его. Поискал похожие темы, ничего не нашел или неправильные запросы пишу.

по моим соображениям его шаблон работает так:
1. нажимается таб
2. выделяется первый элемент на вэб-странице
3. это элемент сохраняется и проверяется внутри (например по тексту содержимому внутри элемента)
4. если элемент подходит, то происходит нажатие на него или если элемент НЕ подходит, то происходит дальнейший поиск элемента через скачки по странице

есть мысли как такое реализовано? видел на миг сам шаблон, но там просто что на C#, подробностей не было
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113
или он просто кликал на элемент, к которому смог привязаться по какому-то атрибуту, а потом уже от него нажимал таб фиксированное количество раз, что больше похоже на правду
 

SVAB

Client
Регистрация
07.08.2022
Сообщения
17
Благодарностей
0
Баллы
1
или он просто кликал на элемент, к которому смог привязаться по какому-то атрибуту, а потом уже от него нажимал таб фиксированное количество раз, что больше похоже на правду
в том то и дело, что на видео четко видно, как выделяются элементы по очереди. Выделяются точно так же, как если зайти на любой сайт и начать нажимать кнопку Tab
 

che100

Client
Регистрация
18.04.2017
Сообщения
808
Благодарностей
503
Баллы
93
в том то и дело, что на видео четко видно, как выделяются элементы по очереди. Выделяются точно так же, как если зайти на любой сайт и начать нажимать кнопку Tab
Не забивай себе голову фигнёй , учи xpath .
 

SVAB

Client
Регистрация
07.08.2022
Сообщения
17
Благодарностей
0
Баллы
1

che100

Client
Регистрация
18.04.2017
Сообщения
808
Благодарностей
503
Баллы
93
к сожалению xpath может меняться после обновления сайта например и тогда работа получается нестабильной
Удачно подобранный xpath работает годами, доказано на практике .
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
Увидел в одном тг канале работу зенопостерского шаблона.

он прыгал по элементам, будто он нажимал на таб (то есть последовательно сверху вниз)
и на нужно элементе он останавливался и нажимал его. Поискал похожие темы, ничего не нашел или неправильные запросы пишу.

по моим соображениям его шаблон работает так:
1. нажимается таб
2. выделяется первый элемент на вэб-странице
3. это элемент сохраняется и проверяется внутри (например по тексту содержимому внутри элемента)
4. если элемент подходит, то происходит нажатие на него или если элемент НЕ подходит, то происходит дальнейший поиск элемента через скачки по странице

есть мысли как такое реализовано? видел на миг сам шаблон, но там просто что на C#, подробностей не было
Хорошо бы увидеть это видео.

Еще надо понять, для чего он ходит по элементам через кнопку таб. Если для того чтобы попасть на нужный элемент, то это очень плохая реализация, если для эмуляции ПФ то ОК.


к сожалению xpath может меняться после обновления сайта например и тогда работа получается нестабильной
В любом случае тут надо будет работать с xPath. То что он через кнопку Таб попадает на элемент, он благодаря этому не получает данные элемента. Данные элемента он все равно получает через xPath.
 

SVAB

Client
Регистрация
07.08.2022
Сообщения
17
Благодарностей
0
Баллы
1
Хорошо бы увидеть это видео.
с видео проблема, его не скачать и не показать\

В любом случае тут надо будет работать с xPath. То что он через кнопку Таб попадает на элемент, он благодаря этому не получает данные элемента. Данные элемента он все равно получает через xPath.
вот тут интересно, а как в зенопстере сделать получение данных черех xpath кубиком?
я понимаю как изначально спарсить xpath и затем провести разные манипуляции с ним, а вот как сделать чтобы он в процессе работы сам парсил? еще и не всё подряд, а только выделенный элемент
 

Akcium

Client
Регистрация
16.12.2020
Сообщения
258
Благодарностей
126
Баллы
43

SVAB

Client
Регистрация
07.08.2022
Сообщения
17
Благодарностей
0
Баллы
1
Так что нужно, прокликать все элементы, подходящие под xpath?
нет

1. выделяем элемент страницы
2. парсим его значение
3. сраниваем с тем значением, которое нужно мне
4.1 если значение подходит - кликаем
4.2 если значение не подходит, выделяем следующий элемент страницы
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
вот тут интересно, а как в зенопстере сделать получение данных черех xpath кубиком?
я понимаю как изначально спарсить xpath и затем провести разные манипуляции с ним, а вот как сделать чтобы он в процессе работы сам парсил? еще и не всё подряд, а только выделенный элемент
Напишите сайт и по каким элементам нужно бегать, я постараюсь подсказать, как это сделать через C# код (кубиком такое вряд ли можно будет сделать).
 

SVAB

Client
Регистрация
07.08.2022
Сообщения
17
Благодарностей
0
Баллы
1
Напишите сайт и по каким элементам нужно бегать, я постараюсь подсказать, как это сделать через C# код (кубиком такое вряд ли можно будет сделать).
например обменник
stargate.finance/transfer

элементы:
из какой сети, из какой монеты
в какую сеть, в какую монету
ну и кнопка перевода
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
например обменник
stargate.finance/transfer

элементы:
из какой сети, из какой монеты
в какую сеть, в какую монету
ну и кнопка перевода
Работать с финансами через кликер очень плохое решение. Кликер может заглючить и получите фин потери.

Набросал код через кликер.
C#:
var tab = instance.ActiveTab;

//Кликаем Token From
tab.FindElementByXPath("//label[contains(@for,'From-input-token')]", 0)
    .Click();

//Парсим токены
var lstTokens = tab.FindElementsByXPath("//img[@alt]"); //сомнительный xPath но вроде собирает что надо.

//Посмотреть результат по атрибуту.
var result = lstTokens.Select(x => x.GetAttribute("alt")).ToList();

//Посмотреть в логе.
foreach (var log in result)
{
    project.SendInfoToLog(log);
}
Реализовать задачу через xPath + кликер будет не просто, я бы рассмотрел вариант работы через Запросы + Json, а по-хорошему должно быть API. Тогда можно будет сделать хорошую реализацию для своих задач.
 

SVAB

Client
Регистрация
07.08.2022
Сообщения
17
Благодарностей
0
Баллы
1
Работать с финансами через кликер очень плохое решение. Кликер может заглючить и получите фин потери.

Набросал код через кликер.
C#:
var tab = instance.ActiveTab;

//Кликаем Token From
tab.FindElementByXPath("//label[contains(@for,'From-input-token')]", 0)
    .Click();

//Парсим токены
var lstTokens = tab.FindElementsByXPath("//img[@alt]"); //сомнительный xPath но вроде собирает что надо.

//Посмотреть результат по атрибуту.
var result = lstTokens.Select(x => x.GetAttribute("alt")).ToList();

//Посмотреть в логе.
foreach (var log in result)
{
    project.SendInfoToLog(log);
}
Реализовать задачу через xPath + кликер будет не просто, я бы рассмотрел вариант работы через Запросы + Json, а по-хорошему должно быть API. Тогда можно будет сделать хорошую реализацию для своих задач.
за код спасибо, но мне нужно чтобы можно было либо не использовать xpath, либо чтобы это xpath парсился в процессе выполнения

xpath имеет свойство меняться и это основная проблема, поэтому я и ищу метод парсинга элементов вэб-страницы
или мб парсить xpath на выделенный элемент

если бы он не менялся, я бы использовал обычный кубик клик по xpath
 

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
393
Баллы
63
за код спасибо, но мне нужно чтобы можно было либо не использовать xpath, либо чтобы это xpath парсился в процессе выполнения

xpath имеет свойство меняться и это основная проблема, поэтому я и ищу метод парсинга элементов вэб-страницы
или мб парсить xpath на выделенный элемент

если бы он не менялся, я бы использовал обычный кубик клик по xpath
xpath не обязательно использовать.... можно искать через атрибуты, можно через селекторы...
однако, если у вас при поиске всегда у элементов "имеет свойство меняться" , то это тоже не поможет...
просто ответьте на один простой вопрос для себя... как я отличу вот этот конкретный нужный мне элемент, от 1000 других элементов на сайте и все сразу станет проще.
ну а xpath это язык поиска и как каждый язык, его надо знать, что бы им пользоваться.
 

SVAB

Client
Регистрация
07.08.2022
Сообщения
17
Благодарностей
0
Баллы
1
xpath не обязательно использовать.... можно искать через атрибуты, можно через селекторы...
однако, если у вас при поиске всегда у элементов "имеет свойство меняться" , то это тоже не поможет...
просто ответьте на один простой вопрос для себя... как я отличу вот этот конкретный нужный мне элемент, от 1000 других элементов на сайте и все сразу станет проще.
ну а xpath это язык поиска и как каждый язык, его надо знать, что бы им пользоваться.
я эту тему открыл, с вопросом как парсить данные через C# и в дальнейшем сранивать их внутри с нужными мне значениями (соотсвестсвенно если я спарсил цифру 1 и внутри сранил, что да - это цифра 1, то продолжаем работу), а потом тут уже понабежали люди со своими идеями куда и как воткнуть этот самый xpath :-)
 

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
393
Баллы
63
я эту тему открыл, с вопросом как парсить данные через C# и в дальнейшем сранивать их внутри с нужными мне значениями (соотсвестсвенно если я спарсил цифру 1 и внутри сранил, что да - это цифра 1, то продолжаем работу), а потом тут уже понабежали люди со своими идеями куда и как воткнуть этот самый xpath :-)
и правильно сделали. потому что xpath как раз и позволяет найти нужный элемент из тысяч на странице, по заранее составленной логике.
другими словами поиск по xpath делает то что вы описали - парсит все элементы и сравнивает с нужными данными и возвращает коллекцию найденных элементов по заданным условиям.
вам надо будет только пройти по этой коллекции и кликнуть по каждому элементу.
 
  • Спасибо
Реакции: Dmitriy Ka

Akcium

Client
Регистрация
16.12.2020
Сообщения
258
Благодарностей
126
Баллы
43
я эту тему открыл, с вопросом .......а потом тут уже понабежали люди со своими идеями куда и как воткнуть этот самый xpath :-)
Вот ведь негодяи!
Простите, не удержался)
 

SVAB

Client
Регистрация
07.08.2022
Сообщения
17
Благодарностей
0
Баллы
1

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