我在本網站上看過「無效的正則表達式標誌」是什麼以及它爲什麼出現在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'成爲一個元素而不是一個字符串? –