XPath - взять наибольшее число

  • Автор темы Автор темы Igorii
  • Дата начала Дата начала

Igorii

Client
Регистрация
21.02.2015
Сообщения
375
Реакции
311
Баллы
63
Подскажите, возможно ли в XPath взять наибольшее число?
Есть путь, который берёт первое число больше 100
//span[@class="dialog"][number(text())>100]
Можно сделать, что бы он брал не первое, а самое большое число на странице?
 
Подскажите, возможно ли в XPath взять наибольшее число?
Есть путь, который берёт первое число больше 100
//span[@class="dialog"][number(text())>100]
Можно сделать, что бы он брал не первое, а самое большое число на странице?
Можно ссылку на данный код страницы пожалуйста, или сам код страницы в блокноте? Я попробую сделать и скину вам ответ.
 
Можно ссылку на данный код страницы пожалуйста, или сам код страницы в блокноте? Я попробую сделать и скину вам ответ.
Код не могу дать. Мне теория нужна, возможно ли это в XPath? Вроде есть функция max(), но что то не получается её пристроить
 
Код не могу дать. Мне теория нужна, возможно ли это в XPath? Вроде есть функция max(), но что то не получается её пристроить
Что бы показать вам теорию, я должен на себе протестировать, но если вы мастер, тогда вот теория:
C#:
Развернуть Свернуть Копировать
ceiling(N): Возвращает самое маленькое целое число, которое не является меньше чем N.
round(N): Возвращает целое число, которое является самым близким к N.
floor(N): Возвращает самое большое целое число, которое не больше чем N.

Ставите вместо N число например 99999 и по идее, должно найти самое близкое к ней, либо вместо N пустота, например так floor().

В крайнем случае используйте команду:
C#:
Развернуть Свернуть Копировать
last()
 
Последнее редактирование:
Что бы показать вам теорию, я должен на себе протестировать, но если вы мастер, тогда вот теория:
C#:
Развернуть Свернуть Копировать
ceiling(N): Возвращает самое маленькое целое число, которое не является меньше чем N.
round(N): Возвращает целое число, которое является самым близким к N.
floor(N): Возвращает самое большое целое число, которое не больше чем N.

Ставите вместо N число например 99999 и по идее, должно найти самое близкое к ней, либо вместо N пустота, например так floor().

В крайнем случае используйте команду:
C#:
Развернуть Свернуть Копировать
last()
Спасибо, но данный функционал для округления чисел, а last(), вернёт последнее значение, а не наибольшее
 
Спасибо, но данный функционал для округления чисел, а last(), вернёт последнее значение, а не наибольшее
Если надумаете, скините в приват часть кода страницы, или в телеграм, посмотрю что можно придумать.
 
  • Спасибо
Реакции: Igorii
Пишите здесь, решение всем будет интересно.
 
Код не могу дать. Мне теория нужна, возможно ли это в XPath? Вроде есть функция max(), но что то не получается её пристроить
max не работает потому что она из XPath 2.0, а Хром использует XPath первой версии.
Теория и ответ тут, но всё-равно придётся под себя самостоятельно допиливать решение.
 
  • Спасибо
Реакции: Igorii
max не работает потому что она из XPath 2.0, а Хром использует XPath первой версии.
Теория и ответ тут, но всё-равно придётся под себя самостоятельно допиливать решение.

Спасибо! Я сделал следующим образом:

1. Кубиком Парсить данные, через свой XPath
//span[@class="dialog"][number(text())>100]
получил в список все числа.

2. Этим кодом, взял из списка самое большое число в переменную {-Variable.tmp-} и очистил список
C#:
Развернуть Свернуть Копировать
int maxNum = project.Lists["List1"].Select(x => int.Parse(x)).Max();
project.Lists["List1"].Clear();
return maxNum;

3. Через стандартный кубик кликаю по самому большому числу, немного изменив XPath
//span[@class="dialog"][number(text())>={-Variable.tmp-}]

Вы не могли бы этот алгоритм упаковать в один снипет, когда нибудь он каждому пригодится.
У меня самого не получилось(
 
Tab tab = instance.ActiveTab;
var arrEl = tab.FindElementsByXPath("//span[@class='dialog'][number(text())>100]");
int maxNum = arrEl.Select(x => int.Parse(x.InnerText)).Max();

tab.FindElementByXPath("//span[@class='dialog'][number(text())>="+ maxNum.ToString() +"]",0).Click();
 
  • Спасибо
Реакции: Se0mashines и Igorii
Tab tab = instance.ActiveTab;
var arrEl = tab.FindElementsByXPath("//span[@class='dialog'][number(text())>100]");
int maxNum = arrEl.Select(x => int.Parse(x.InnerText)).Max();

tab.FindElementByXPath("//span[@class='dialog'][number(text())>="+ maxNum.ToString() +"]",0).Click();
Супер! Работает! Спасибо!
 

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