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

2 ответа

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

re=/…/; re.exec(storedVars["CurrentUrl"])

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

<variable> = / <your-regex> /

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

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

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

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

Другие вопросы по тегам