Перейти к содержимому

Фотография

Отделить буквы от цифр и


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 13

#1 humannn

humannn

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 30 ноября 2010 - 08:24

Использую Selenium IDE.

Делаю команды:
| storeText | //h1 | id |
| echo | ${id} | |

echo возвращает текст: Заказ №123

Мне нужно как-то отделить буквы от цифр. Т.е. нужно в переменную засунуть 123. Как это сделать и можно ли это сделать?
  • 0

#2 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 30 ноября 2010 - 09:33

Попробуйте через JavaScript split.
А вообще если такие задачи появляются, то рекомендую отказаться от Selenium IDE, иначе со временем проблем будет всё больше и больше.
  • 0

#3 humannn

humannn

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 30 ноября 2010 - 09:58

т.е. средствами selenium'a такого не сделать? может как-то через регулярные?
  • 0

#4 mcreature

mcreature

    Активный участник

  • Members
  • PipPip
  • 88 сообщений

Отправлено 30 ноября 2010 - 10:02

т.е. средствами selenium'a такого не сделать? может как-то через регулярные?

Я думаю, vitorg имел ввиду переход с IDE на RC.
С помощью регулярных - да, можно.
Но боюсь, что IDE просто не подерживает такие вещи.
  • 0

#5 humannn

humannn

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 30 ноября 2010 - 10:03

А можно маленький пример как это можно в RC сделать?
  • 0

#6 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 30 ноября 2010 - 10:17

Это конечно ещё то извращение, но вот так можно это сделать в Selenium IDE:
<tr>
	<td>storeEval</td>
	<td>window.document.evaluate( &quot;//h1&quot;, window.document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null ).iterateNext().innerHTML.substr(8,3)</td>
	<td>text</td>
</tr>
<tr>
	<td>echo</td>
	<td>${text}</td>
	<td></td>
</tr>

  • 0

#7 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 30 ноября 2010 - 10:19

Это конечно ещё то извращение, но вот так можно это сделать в Selenium IDE:

Да, именно про это я и говорил в случае если очень хочется через IDE, но согласен - это извращение ещё то :)
  • 0

#8 mcreature

mcreature

    Активный участник

  • Members
  • PipPip
  • 88 сообщений

Отправлено 30 ноября 2010 - 10:20

    String zakazNumber;
    Pattern p = Pattern.compile(".+(\\d+)");
    Matcher m;
    
    m = p.matcher(selenium.getText("путь к элементу"));
    if(m.find()) {
        zakazNumber = m.group(1);
    }

Селениум - инструмент для эмуляции действий пользователя. В таких задачах, как ваша, без вмешательства языка программирования, боюсь сделать не получится.

зы: хотя вон у ребят получилось :biggrin:
Но я все же предпочитаю не издеваться над собой.
  • 0

#9 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 30 ноября 2010 - 10:21

А можно маленький пример как это можно в RC сделать?


При использовании языка высокого уровня (например Java или С #) для извлечения чисел из строки Selenium не нужен.
  • 0

#10 humannn

humannn

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 30 ноября 2010 - 10:43

stmark, да про пример на RC я что-т загнул. Извиняюсь.

Вставил
window.document.evaluate( &quot;//h1&quot;, window.document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null ).iterateNext().innerHTML.substr(8,3)

Но выдается "Threw an exception: syntax error"
  • 0

#11 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 30 ноября 2010 - 12:44

stmark, да про пример на RC я что-т загнул. Извиняюсь.

Вставил

window.document.evaluate( &quot;//h1&quot;, window.document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null ).iterateNext().innerHTML.substr(8,3)

Но выдается "Threw an exception: syntax error"


Всё верно, просто нужно вставлять не туды. вставлять нужно в исходник на вкладке Source, а если в Table, то нужно подправить:

Command = storeEval
Target = window.document.evaluate( "//h1", window.document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null ).iterateNext().innerHTML.substr(8,3)
Value = text

  • 0

#12 humannn

humannn

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 30 ноября 2010 - 13:22

stmark, спасибо большое, все получилось.

Только вот мне думается, как же до такого додуматься, что бы в похожей ситуации составить правильный вывод?
  • 0

#13 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 30 ноября 2010 - 13:59

Только вот мне думается, как же до такого додуматься, что бы в похожей ситуации составить правильный вывод?


Взять учебник по JScript и доки по Selenium'у и практиковаться, если я правильно понял вопрос.
  • 0

#14 johan

johan

    Новый участник

  • Members
  • Pip
  • 18 сообщений

Отправлено 06 декабря 2010 - 18:58

Если одно и то же значение постоянно вовращается - то легко с Seleniumom RC, например в Python есть функция slice. Если значение каждый раз меняется, то похоже на AJAX элемент.... сделать можно, но немного сложней будет, но тоже только с Seleniumom RC :)
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных