Проблема с регулярным выражением Selenium IDE

У меня проблема с регулярным выражением

storeLocation | CurrentUrl
storeEval     | re=/https://[.\w-]+/[.\w-]*\//;re.exec(${CurrentUrl})   |  jsHostName

это дает эту ошибку:

[error] Threw an exception: missing ) after argument list 

Примечание. Я заметил, что Selenium IDE вставляет дополнительные косые черты после того, как я перемещаю курсор в текстовое поле, содержащее все введенные мной команды IDE.

storeEval     | re=/https://[.\\w-]+/[.\\w-]*\\//;re.exec(${CurrentUrl})  |  jsHostName

person Remy    schedule 06.06.2011    source источник
comment
storeEval находится на отдельной строке от storeLocation. Я не использую редактор stackoverflow.   -  person Remy    schedule 06.06.2011
comment
Я исправил это для вас. Для дальнейшего использования см.: stackoverflow.com/editing-help   -  person Bart Kiers    schedule 06.06.2011


Ответы (2)


${CurrentUrl} возвращает значение переменной в виде обычного текста, но поскольку вы хотите работать с переменной в javascript, вам необходимо получить к ней доступ через массив storedVars. Следовательно, если вы измените свой скрипт на следующий, он должен работать:

re=/…/; re.exec(storedVars["CurrentUrl"])
person smk-ka    schedule 27.07.2011

Ваше регулярное выражение недействительно: в контексте JavaScript (поскольку, как вы, вероятно, знаете, аргумент для storeEval является выражением JavaScript) общая форма этого сокращенного конструктора для объекта регулярного выражения:

<variable> = / <your-regex> /

Важным следствием этого является то, что <your-regex> может не содержать косые черты (/), если только вы не экранируете их с помощью обратной косой черты. Вы сделали это для последней косой черты в своем выражении, но вы должны сделать это для каждой из них, поэтому я добавил три обратной косой черты, чтобы получить это:

re = /https:\/\/[.\w-]+\/[.\w-]*\//;

Обратите внимание, что вы даже можете проверить свое регулярное выражение прямо здесь, на SO(!): Посмотрите на исходный фрагмент кода, и вы увидите, что только /https:/ выделено бордовым цветом; с моим фрагментом кода чуть выше вся правая часть выделена бордовым цветом.

Это исправление должно продвинуть вас дальше; не проверяли это в Selenium, чтобы увидеть, решает ли это всю вашу проблему.

person Michael Sorens    schedule 07.06.2011