Selenium IDE: проблема регулярных выражений - PullRequest
0 голосов
/ 06 июня 2011

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

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

Ответы [ 2 ]

3 голосов
/ 27 июля 2011

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

re=/…/; re.exec(storedVars["CurrentUrl"])
0 голосов
/ 08 июня 2011

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

<variable> = / <your-regex> /

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

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

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

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

...