1

WebDriver スクリプトで次のチェックを行います。ここでは、ページから日付フィールドを引き出しています。

IWebElement crInfo = driver.FindElement(By.Id("crInfo"));
string copyDate = crInfo.Text;
// From the converted string now pulling out the year by index and length
string copyYear = copyDate.Substring(2, 4);
// Get the current year
int nowYear = DateTime.Today.Year;
// Converting the year
nowYear.ToString().Trim();
// Make the comparison to be sure the copyright is using the current date
Assert.AreEqual(copyYear,nowYear);

スニペットで述べたように、私がやろうとしているのは、ページに表示される日付が現在の年であることを確認することです。これは、配置された関数が正しい値を返すことを Web フロント エンドでチェックするだけです。これを実行すると、NUnit コンソールに次のように表示されます。

エラー: 予想: "2012" しかし、2012 年でした

2つの違いがよくわかりません。引用符で囲まれた値は文字列ですか? スクリプトに変換を追加して、それらが同じタイプであることを確認し、空白がある場合に備えてトリムを追加しました。

これを機能させたい場合、Assetion を通過させるために私が行っていないことは何ですか?

4

2 に答える 2

3

タイプとアサーションを見てください。

string copyYear = ...
int nowYear = ...
Assert.AreEqual(copyYear,nowYear);

そのアサーションは、値が何であれ、決して通過しません。文字列がC#の整数と等しくなることはありません。この種のシナリオで型強制を行う言語はありますが、C#はその1つではありません。

また、この行は役に立たないことに注意してください。

nowYear.ToString().Trim();

文字列は.NETでは不変Trim()です-呼び出された文字列を変更しないなどのメソッド-新しい文字列を返します。あなたはその戻り値を無視しています...そしてとにかく、あなたは後で完全に無視する文字列でそれを呼び出しています。あなたが使用することができます:

string nowYearAsString = nowYear.ToString().Trim();
Assert.AreEqual(copyYear, nowYearAsString);

...または、代わりに最初に解析copyYearして、int代わりにそれを比較することができます:

int copyYearAsInt = int.Parse(copyYear);
Assert.AreEqual(copyYearAsInt, nowYear);
于 2012-08-09T16:47:37.607 に答える
2

copyYearは文字列です。nowYearはintです。あなたのライン

nowYear.ToString().Trim();

nowYearは変更されません。この行の結果として比較しようとした文字列は、どの変数にも割り当てられていません。あなたがする必要があります

string nowYearStr =  nowYear.ToString().Trim();

次に、nowYearStrをcopyYearと比較します。

于 2012-08-09T16:48:21.273 に答える