2013-03-05 5 views
0

Watin을 사용하여 드롭 다운 목록을 반복하고 싶습니다. html로는 다음과 같습니다 : 드롭 다운에서 옵션 중 하나를 클릭Watin을 사용하여 드롭 다운 목록에서 각 항목을 선택하십시오.

<select name="ctl00$Header1$ddlPropertyList" onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;ctl00$Header1$ddlPropertyList\&#39;,\&#39;\&#39;)&#39;, 0)" id="ctl00_Header1_ddlPropertyList" onmouseover="this.title=this.options[this.selectedIndex].title" style="width:325px;"> 
    <option selected="selected" value="0185795046:R:GPC:Eligible:F" title="0185795046 - ">0185795046 - </option> 
    <option value="0325844068:R:GPC:Eligible:F" title="0325844068 - ">0325844068 - </option> 
    <option value="0374795034:R:GPC:Eligible:F" title="0374795034 - ">0374795034 - </option> 
    <option value="0510031035:C:GPC:Eligible:F" title="0510031035 - ">0510031035 - </option> 
    <option value="1424795158:R:GPC:InEligible:F" title="1424795158 - ">1424795158 - </option> 
    <option value="1550795037:R:GPC:Eligible:F" title="1550795037 - ">1550795037 - </option> 

</select> 

, 그것은 다른 페이지를로드, 나는 연속적으로 그들 각각을로드 할. 기본적으로, 나는 이런 식으로하려고합니다.

SelectList ddl = browser.SelectList(Find.ById("ctl00$Header1$ddlPropertyList")); 
      foreach (var item in ddl.AllContents) 
      { 
       ddl.Select(item); 
      } 

하지만 내 코드가 잘못되었다고 확신합니다.

+0

소리가 난다 선택한 후 GoBack 명령을 사용하십시오. – alonp

+0

예, 새 페이지를로드하지만 드롭 다운을 포함하는 옵션 1을 선택할 계획입니다. 나는 그 시점에서 페이지를 떠날 지 아닐지는 모르겠지만, 옵션 2 등을 선택하기 위해 드롭 다운이있는 페이지로 돌아갈 계획입니다. –

답변

1

항목 목록을 반복 할 때 객체가 범위를 벗어난 경우, 특히 페이지 객체 패턴을 사용할 때 실행되는 경우가 있습니다 (사용하는 것이 좋습니다). 그래서 루프를 통해 목록을 참조하는 대신 명시 적으로 선언 된 개수를 반복하는 경향이 있습니다. 추가 보너스 : 변수에 수를 저장하고 해당 변수를 사용하면 매번 브라우저 객체를 참조하는 것보다 빠릅니다. 루프 할 항목이 많은 경우 차이가 있습니다.

일부 거친 미완성 코드 - 기본적으로 alonp 말했다 구체화 무엇을 조금 더 : 당신은 당신이 각에 다시 반환해야이 경우 옵션을 선택 페이지에있을 필요가 같은

int numberOfItems = browser.SelectList(Find.ById("ctl00$Header1$ddlPropertyList")).count; 

for(int i = 0; i < numberOfItems; i++) 
{ 
    //this is one the "search" page 
    browser.SelectList(Find.ById("ctl00$Header1$ddlPropertyList")).Options[i].Select; 
    browser.yourGoAction(); <- assumes navigation isn't automatic when an item is selected. EG: button.Click() or something. 

    //this is on the "results" page. 
    do stuff 

    //go back to the "search" page. 
    browser.Back(); 
} 
+0

'.Select'에()를 추가해야했습니다. 그렇지 않으면,이 작품 :) –