Selenium IDE正则表达式问题

时间:2011-06-06 15:27:58

标签: regex selenium selenium-ide

我遇到了正则表达式的问题

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

它给出了这个错误:

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

注意:我注意到,在将光标移动到包含我输入的所有IDE命令的文本框后,Selenium IDE会添加额外的斜杠。

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

2 个答案:

答案 0 :(得分:3)

${CurrentUrl}将变量的值作为文字文本返回,但由于您希望在javascript中使用变量,因此需要通过storedVars数组访问它。因此,如果您将脚本更改为以下内容,它应该可以工作:

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

答案 1 :(得分:0)

你的正则表达式无效:在JavaScript上下文中(因为你可能知道,storeEval的参数是一个JavaScript表达式),正则表达式对象的这个简写构造函数的一般形式是:

<variable> = / <your-regex> /

重要的含义是,<your-regex>可能包含任何virgules(/),除非您使用反斜杠正确转义它们。你已经为表达式中的最终virgule做了这个,但你必须为它们中的每一个做这个,因此我添加了三个反斜杠来实现这​​个:

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

请注意,您甚至可以在SO(!)上验证您的正则表达式:查看您的初始代码片段,您会看到只有/https:/在勃艮第中突出显示;我的代码片段就在整个右侧上方,在勃艮第中突出显示。

这个修复应该让你更远;尚未在Selenium中查看它是否可以解决您的整个问题。