WatiN - 从弹出窗口中选择一个下拉菜单

时间:2012-04-27 13:51:34

标签: popup watin automated-tests

我目前正在尝试设置WatiN来对新的CRM解决方案进行一些自动化测试。我们有一个名为Advanced Find的屏幕按钮。
单击此按钮时,将打开一个新弹出窗口。这个弹出窗口有一个下拉菜单,我想点击它并从中选择选项。

弹出窗口的代码是:

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">

2 个答案:

答案 0 :(得分:0)

将断言更改为

Assert.That(ddl.SelectedItem.Text.Equals("Organisations"));

SelectedItem的类型为Option,其中“Organizations”的类型为String,因此您无法比较这两个值。通过使用Text属性,您将获得所需的结果。

编辑:就您的编辑而言 - 是的,您没有文字“组织”的元素。您必须使用现有属性(标题或值)找到要选择的内容。所以错误的解决方案是使用Find类:

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

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

答案 1 :(得分:0)

框架内是否有弹出窗口。如果是这样,您将需要从框架遍历。 让我知道它是怎么回事。