0

我目前正在尝试设置 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">
4

2 回答 2

0

将断言更改为

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

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

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

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

或者

ddl.Option(Find.ByValue("account")).Select();
于 2012-04-27T14:22:43.150 回答
0

是框架内的弹出窗口。如果是这样,您将需要从 Frame 中遍历。让我知道事情的后续。

于 2012-05-09T10:17:55.030 回答