我在本网站上看过“无效的正则表达式标志”是什么以及它为什么出现在JavaScript中,但这种特殊情况似乎与现有问题不匹配。为什么我会收到“无效的正则表达式标志”错误?
我正在为Robot Framework开发一个基于JavaScript的关键字(https://codereview.stackexchange.com/questions/175683/user-friendly-robot-framework-keywords-written-in-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的noob,所以我相当肯定这个错误很简单。
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
编辑:代码的重大修改。
在你提供的代码中,'thisElement'是一个字符串,因此没有'innerHTML'属性。它也不会产生您所描述的错误。您的实际代码和您的问题中的代码之间必定存在不匹配。 – apsillers
如果实际上使用错误的方向斜杠“转义”引号,但“thisElement”实际上不是字符串(即,您正在执行类似于'thisElement = document.getElementsByTagName(/“* /”)的操作因为'/“* /'是一个正则表达式(它匹配零个或多个引号字符),但最终的'''不是一个有效的正则表达式标志(如'g''')或'我'来使正则表达式全局或不区分大小写)。 – apsillers
要添加一些与您的评论相关的内容,现在错误的完整文本已经存在,并且其中的代码与我实际使用的代码相同。如果是这样的话,我会如何让'thisElement'成为一个元素而不是一个字符串? –