我遇到了正则表达式的问题
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
答案 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中查看它是否可以解决您的整个问题。