我目前正在尝试设置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">
答案 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)
框架内是否有弹出窗口。如果是这样,您将需要从框架遍历。 让我知道它是怎么回事。