我已经在这个网站上查看了什么"无效的正则表达式标志"它是为什么它出现在JavaScript中,但这个特殊情况似乎与现有问题不相符。
我正在为Robot Framework(https://codereview.stackexchange.com/questions/175683/user-friendly-robot-framework-keywords-written-in-javascript开发一个基于JavaScript的关键字,它不完全相同,但它使用相同的方法来调用JavaScript代码)。这是我正在使用的代码。机器人框架关键字:
Click By Text
[Arguments] ${text} ${iteration}=1
${tag} = Execute Javascript ${ABS_PATH}/${PROJECT}/External/ClickByText.js.ClickByText(${text}, ${iteration});
Click Element ${tag}
整个JavaScript文件。我承认自己是一个使用JavaScript的菜鸟,这就是为什么我相当肯定这个错误很简单。
function ClickByText(str, desired) {
var all = document.getElementsByTagName("*");
var instance = 0;
var result;
for (var i=0, max=all.length; i < max; i++) {
var thisElement = all[i];
if (thisElement.innerHTML === str) {
instance++;
if (instance === desired) {
result = "document.getElementsByTagName(\"*\")[" + i + "]";
break;
}
}
}
return result;
}
如果你碰巧知道如何使这个关键字有效,那就太棒了,但我特意找到了为什么我会收到这个错误。因为我使用PyCharm并像这样运行它,所以我甚至不知道我接受了什么行。
编辑:修正了第4行的字符串创建。
编辑:错误的全文:
WebDriverException: Message: unknown error: Runtime.evaluate threw exception: SyntaxError: Invalid regular expression flags
编辑:代码的主要修订版。
答案 0 :(得分:0)
经过对我的代码的逐行测试后,我发现错误发生在修订后代码的if (instance === desired)
中。就像我说的那样,它很简单。我有一个太多的等号,正确的代码是if (instance == desired)
。
基于对我原始问题的评论和我在Stack Overflow上发现的其他内容,我会相信&#34;无效的正则表达式标记&#34;表示某个表达式(例如===
)因任何原因而不正确。根据我发现的事情,它有时会比这更复杂,但显然它是它的基础。