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, чтобы увидеть, решит ли он всю вашу проблему.