0

私はウェブアプリのテストを書いています。アプリケーションのある時点で、Web ページは Javascript を使用して完成されます。テストのために、Visual Studio 2012 をNUnitとで使用していSeleniumます。id=j_idt13:JNumberのボックスに のテキスト値があるかどうかを確認したいsometext

IJavaScriptExecutor js = driver as IJavaScriptExecutor;
string valoare = (string)js.ExecuteScript("return $('#j_idt13\\:JNumber').val();");
Assert.IsTrue(valoare.Equals("sometext"));

このエラーが発生し続けます:

「構文エラー、認識できない式: サポートされていない疑似:JNumber」.

ここで何が欠けていますか?

4

2 に答える 2

1

機能するものがあることは知っていますが、JavaScript を使用して要素の値をフェッチすることは避けるように注意したいと思います。実際、一般的に、テストを実行するときは、他に方法がない場合を除いて避ける必要があります。やってみたいです。その理由は、Selenium が一般的なユーザーと同じように動作することになっているためです。一般的なユーザーは、JavaScript をページに入力したり、直接操作したりしません。テストでは、jQuery がページ上に存在し、機能していると想定してはならないため、これは jQuery を使用する場合に特に重要です。Selenium 自体がフィールドの値をフェッチする機能を提供するため、コードを次のように書き直すことをお勧めします。

driver.FindElement(By.Id("j_idt13:JNumber")).GetAttribute("value");

于 2013-05-14T15:18:51.563 に答える
0

いくつかの試行錯誤の後、私はうまくいくものを見つけました:

string valoare = (string)js.ExecuteScript("return document.getElementById('j_idt13\\:JNumber').value;");

なぜそれが機能するのか、私にはわかりません。基本的には同じコマンドです。jQuery は、私が最初に試したコマンド以外のコマンドでも動作します。

于 2013-05-14T13:59:54.517 に答える