为什么我得到一个"无效的正则表达式标志"错误?

时间:2017-09-26 17:36:41

标签: javascript robotframework

我已经在这个网站上查看了什么"无效的正则表达式标志"它是为什么它出现在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

编辑:代码的主要修订版。

1 个答案:

答案 0 :(得分:0)

经过对我的代码的逐行测试后,我发现错误发生在修订后代码的if (instance === desired)中。就像我说的那样,它很简单。我有一个太多的等号,正确的代码是if (instance == desired)

基于对我原始问题的评论和我在Stack Overflow上发现的其他内容,我会相信&#34;无效的正则表达式标记&#34;表示某个表达式(例如===)因任何原因而不正确。根据我发现的事情,它有时会比这更复杂,但显然它是它的基础。