Выбор варианта из списка выбора с использованием watin

У меня есть список выбора с 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 ответ

Вам будет намного легче, если вы выберете элементы по значению, поскольку они имеют тенденцию меняться гораздо меньше, чем сам текст. Изменение довольно просто:

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

Если это не решает вашу проблему, укажите страницу, которую вы пытаетесь использовать, и я создам код для вас, чтобы выбрать правильный вариант.

Другие вопросы по тегам