"無効な正規表現フラグ"が何であるか、なぜ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を使用したノブであることを認めています。そのため、このエラーは単純です。
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を使用しており、このように実行しているので、私はそれをどのような行にしているのかも知らない。
編集:エラーの全文:
WebDriverException: Message: unknown error: Runtime.evaluate threw exception: SyntaxError: Invalid regular expression flags
EDIT:コードの主な改正の行に4
EDITを文字列の作成を修正しました。
あなたが提供したコードでは、 'thisElement'は文字列なので、' innerHTML'プロパティはありません。あなたが説明したエラーも発生しません。あなたの実際のコードとあなたの質問のコードとの間に不一致がなければなりません。 – apsillers
'thisElement = document.getElementsByTagName(/" */")のように、間違った方向のスラッシュで引用符を実際にエスケープしていますが、' thisElement'は実際には文字列ではない場合(つまり、 '/" */'は正規表現(0個以上の引用符にマッチする)であるが、最後の' "は有効なregexpフラグではない(' g 'のように) regexpを大文字または大文字と小文字を区別させないようにするには 'i'を使います)。 – apsillers
あなたのコメントに関連するものをいくつか追加するには、エラーの全文がそこにあります。上のコードは、実際に使用しているコードと同じです。その場合、 'thisElement'を文字列ではなく要素にする方法はありますか? –