使用watin问题从{select}列表中选择选项

时间:2015-08-10 14:29:25

标签: c# watin gallio

我有一个包含HTML的选择列表:

<select style="background-color: rgb(255, 255, 255);" id="advFindE_fieldListFLDCTL" class="ms-crm-SelectBox" Sort="ascending" defaultSelected="-1">
<optgroup id="fld" label="Fields">
<option title="Case" value="il_caseid" datatype="lookup" namemaxlength="200" nameattr="il_caseidname" lookupstyle="single" lookuptypenames="il_protectionworksheet:10093:Protection Worksheet" lookuptypes="10093">Case</option>
<option title="Created By" value="createdby" datatype="lookup" namemaxlength="320" nameattr="createdbyname" lookupstyle="single" lookuptypenames="systemuser:8:User" lookuptypes="8">Created By</option>
...
<optgroup id="ent" label="Related">
...
</optgroup></select>

对于我的生活,我无法通过watin选择“创建者”选项。我不确定它是否因为optgroup元素或者是什么。我几乎尝试了几乎所有我能想到的:

advancedFindWindow.Frame(CRMConstants.contentIFrame).SelectList("advFindE_fieldListFLDCTL").Option("Created By").Select();

advancedFindWindow.Frame(CRMConstants.contentIFrame).SelectList("advFindE_fieldListFLDCTL").Option("Created By").Click();

    advancedFindWindow.Frame(CRMConstants.contentIFrame).Div("advFindE_fieldListFLDLBL").Focus();
advancedFindWindow.Frame(CRMConstants.contentIFrame).Div("advFindE_fieldListFLDLBL").Click();
Thread.Sleep(250);
advancedFindWindow.Frame(CRMConstants.contentIFrame).SelectList("advFindE_fieldListFLDCTL").Focus();
advancedFindWindow.Frame(CRMConstants.contentIFrame).SelectList("advFindE_fieldListFLDCTL").Click();
SendKeys.SendWait("Created By");
Thread.Sleep(1000);
SendKeys.SendWait("{ENTER}");

然而,这些似乎都不起作用。最后一次尝试确实选择了一个选项,但由于某种原因它会选择一个完全不同的选项我完全无能为力。任何想法都会有所帮助。

1 个答案:

答案 0 :(得分:0)

如果您按值选择项目将会更容易,因为这些项目的变化往往比文本本身更少。变化很简单:

advancedFindWindow.Frame(CRMConstants.contentIFrame).SelectList("advFindE_fieldListFLDCTL").SelectByValue("createdby");

如果这不能解决您的问题,请指出您要使用的页面,我将为您创建代码,以便您选择正确的选项。