2012-04-27 8 views
0

現在、新しいCRMソリューションの自動テストを行うためにWatiNを設定しようとしています。私たちは詳細検索と呼ばれる画面ボタンを持っています。
このボタンをクリックすると、新しいポップアップが開きます。このポップアップにはドロップダウンメニューがあり、それをクリックしてオプションを選択します。WatiN - ポップアップからドロップダウンメニューを選択

ポップアップウィンドウのコードは次のとおりです。

td class="ms-crm-AdvFind-Label"><br> 
td class="ms-crm-AdvFind-EntityList"> <br> 
select name="slctPrimaryEntity" class="ms-crm-SelectBox " id="slctPrimaryEntity"  Sort="ascending" defaultSelected="activitypointer"><br> 
option title="Organisations" value="account"> 

次のように私はWatiNコードは次のとおりです。

ie.Image(Find.ByClass("ms-crm-ImageStrip-advancedfind32")).Click(); 
IE poppedUpBrowser = IE.AttachTo<IE>(Find.ByTitle("Advanced Find - Microsoft Dynamics CRM")); 
SelectList ddl = poppedUpBrowser.SelectList(Find.ByClass("ms-crm-AdvFind-Label")&(Find.ById("slctPrimaryEntity")));<br> 
ddl.Option("Organisations").Select();<br> 
Assert.That(ddl.SelectedItem.Equals("Organisations"));<br> 

誰かが私が間違っているところを指摘してくださいすることができます。

ありがとうございました。

編集:

テストを実行しているとき、私は現在、このエラーメッセージを取得しています:

Failure: WatiN.Core.Exceptions.ElementNotFoundException : Could not find OPTION element tag matching criteria: Attribute 'innertext' equals 'Organisations' ignoring case at http://website 

Stack Trace: 
at WatiN.Core.Element.get_NativeElement() 
at WatiN.Core.Element.GetAttributeValueImpl(String attributeName) 
at WatiN.Core.Component.GetAttributeValue(String attributeName) 
at WatiN.Core.Option.setSelected(Boolean value, Boolean WaitForComplete) 
at WatiN.Core.Option.Select() 

編集:その他のHTMLコード:

<tbody> 
<tr height="100%"> 
<td class="AdvFind_td_FindBody"> 
<span id="advancedFind"> 
<table class="ms-crm-AdvFindControl" id="advFind" cellSpacing="0" cellPadding="0" EntityName="activitypointer" UIProvider="" DataProvider="" EntityTypeCode="4200" DisableValueControlInSimpleMode="0" DistinctFetch="1" SaveChangesAlert="1" IncludeUserQuery="1" IncludeSystemQuery="1" ValidQueryType="0" FilterControlVisible="1" TitleVisible="0" EntityListVisible="1" RelatedEntitiesVisible="1" QueryListVisible="1" CanCreateUserQuery="1" CanWriteUserQuery="1" IncludeAPIQuery="0" FetchMode="2" Buttons="1023" Modes="3" Mode="1" aliasesInInitialFetch=""> 
<tbody> 
<tr class="ms-crm-AdvFind-TitleArea"> 
<td> 
<table class="ms-crm-AdvFind-Title-table" style="table-layout: fixed;"> 
<tbody> 
<tr> 
<td> 
<table> 
<tbody> 
<tr> 
<td class="ms-crm-AdvFind-EntityList"> 
<select name="slctPrimaryEntity" class="ms-crm-SelectBox " id="slctPrimaryEntity" Sort="ascending" defaultSelected="activitypointer"> 
<option title="Activities" value="activitypointer"> 
<option title="Addresses" value="customeraddress"> 

答えて

0

フレーム内のポップアップです。その場合は、フレームから移動する必要があります。 どうしたらいいか教えてください。

+0

はい、ポップアップにフレームがありました。それを見つけて、その情報を使ってアイテムを選択しました。 – user1361245

0

変更

Assert.That(ddl.SelectedItem.Text.Equals("Organisations")); 
にアサート

Se lectedItemはOption型で、 "Organizations"はString型で、2つの値を比較することはできません。 Textプロパティを使用すると、必要な結果が得られます。

EDIT:限り、あなたの編集が行くように - はい、あなたはテキスト「組織」を持つ要素を持っていません。既存の属性(タイトルまたは値)を使用して、選択したいものを見つけなければなりません。だから、エラーの解決策は、検索クラスを使用することです:

ddl.Option(Find.ByTitle("Organisations")).Select(); 

または

ddl.Option(Find.ByValue("account")).Select(); 
+0

こんにちは、ありがとうございました。
あなたが提案したように、私はまだ新しい行で上記と同じエラーを受けています。
私は試してみたいことがありますか?必要に応じて、サイトからコードを追加できます。ありがとう。 – user1361245

+0

よく選択リストのhtmlが役に立ちます – t3hn00b

+0

SelectListがjavascriptによって作成されていても問題はありますか?私がF12 Developer Toolsを使ってページを見ると、生成されたHTMLが得られますが、ページDOMを見ると、そのすべてがスクリプトになります。 – user1361245

関連する問題