2013-11-23 2 views
1

CodedUI를 사용하여 아래 표시된 것처럼 HTML 양식에서 여러 확인란을 선택 (선택)하고 싶습니다. 다음을 시도했지만 특정 확인란을 선택하는 방법을 잘 모르겠습니다. 몇 가지 아이디어 덕분에 가지고 올 수 :codedui 확인란을 선택했습니다. C#

UITestControl checkBoxes = new UITestControl(browser); 
    checkBoxes.TechnologyName = "Web"; 
    checkBoxes.SearchProperties.Add("TagName", "TD"); 
    checkBoxes.SearchProperties.Add("ControlType", "Cell"); 
    checkBoxes.SearchProperties.Add("Name", "checkboxes[]"); 
    // checkBoxes.SearchProperties[HtmlCheckBox.PropertyNames.Value] = "cb2"; 
    // checkBoxes.SearchProperties.Add("InnerText", "Checkbox Items:"); 

    checkBoxes.SetProperty("Checked", true); 




    <tr> 
     <td> 
     Checkbox Items:<br /> 
     <input type="checkbox" name="checkboxes[]" value= 
     "cb1" />Checkbox 1 
     <input type="checkbox" name="checkboxes[]" 
     value="cb2" />Checkbox 2 
     <input type="checkbox" name= 
     "checkboxes[]" value="cb3" checked="checked" />Checkbox 3 
     </td> 
    </tr> 

답변

0
HtmlCheckBox mUICheckboxesCheckBox = new HtmlCheckBox(parentControl); 

#region Search Criteria for first checkBox cb1 
         mUICheckboxesCheckBox.SearchProperties[HtmlCheckBox.PropertyNames.Id] = null; 
         mUICheckboxesCheckBox.SearchProperties[HtmlCheckBox.PropertyNames.Name] = "checkboxes[]"; 
         mUICheckboxesCheckBox.SearchProperties[HtmlCheckBox.PropertyNames.Value] = "cb1"; 
         mUICheckboxesCheckBox.SearchProperties[HtmlCheckBox.PropertyNames.LabeledBy] = null; 
         mUICheckboxesCheckBox.FilterProperties[HtmlCheckBox.PropertyNames.Title] = null; 
         mUICheckboxesCheckBox.FilterProperties[HtmlCheckBox.PropertyNames.Class] = null; 
         mUICheckboxesCheckBox.FilterProperties[HtmlCheckBox.PropertyNames.ControlDefinition] = "name=\"checkboxes[]\" value=\"cb1\" type=\"ch"; 
         mUICheckboxesCheckBox.FilterProperties[HtmlCheckBox.PropertyNames.TagInstance] = "1"; 
         mUICheckboxesCheckBox.WindowTitles.Add("http://localhost:23159/HtmlPage1.html"); 
         #endregion 
if(mUICheckboxesCheckBox.TryFind()) 
mUICheckboxesCheckBox.Checked = true; 

이 다른 두 확인란에 대해 동일한 작업을 수행합니다.

0

글쎄, 정확히 무엇을하려고하는지에 달려 있습니다. 가능하면 각 확인 상자에 식별자를 추가하면 쉽게 식별 할 수 있습니다. 할 수 없다면 항상 같은 순서로 x 개의 체크 박스가 있다고 가정하면됩니다.

  1. 식별자를 추가
<tr> 
     <td> 
     Checkbox Items:<br /> 
     <input type="checkbox" name="checkboxes[]" value= 
     "cb1" data-automation-name="firstBox" />Checkbox 1 
     <input type="checkbox" name="checkboxes[]" 
     value="cb2" data-automation-name="secondBox" />Checkbox 2 
     <input type="checkbox" name= 
     "checkboxes[]" value="cb3" data-automation-name="thirdBox" checked="checked" />Checkbox 3 
     </td> 
    </tr> 
HtmlCheckBox firstBox = new HtmlCheckBox(tableRow); 
firstBox.SearchProperties.Add(HtmlControl.PropertyNames.ControlDefinition, String.Format("{0}=\"{1}\"", "data-automation-name", "firstBox"), PropertyExpressionOperator.Contains); 

HtmlCheckBox secondBox = new HtmlCheckBox(tableRow); 
firstBox.SearchProperties.Add(HtmlControl.PropertyNames.ControlDefinition, String.Format("{0}=\"{1}\"", "data-automation-name", "secondBox"), PropertyExpressionOperator.Contains); 

HtmlCheckBox thirdBox = new HtmlCheckBox(tableRow); 
firstBox.SearchProperties.Add(HtmlControl.PropertyNames.ControlDefinition, String.Format("{0}=\"{1}\"", "data-automation-name", "thirdBox"), PropertyExpressionOperator.Contains); 
  • 을 모두 찾아 (

    VAR checkBoxesLookupFunc =() => 새로운 HtmlCheckBox을 반복

      tableRow) .FindMatchingControls(). 캐스트();

      HtmlCheckBox firstBox = checkBoxesLookupFunc(). First();

      HtmlCheckBox secondBox = checkBoxesLookupFunc(). 건너 뛰기 (1) .First();

      HtmlCheckBox thirdBox = checkBoxesLookupFunc(). 건너 뛰기 (2) .First();

    개체가 두 번째로 조회 할 수 없기 때문에 새로운 검색 컬렉션을 반환하는 함수를 사용해야합니다. 일치하는 컨트롤을 찾을 때 제대로 설정되지 않은 컨트롤에 대한 쿼리 경로의 내부 저장소와 관련이 있다고 생각합니다.

    코드화 된 UI를 통해 추상화를 사용하여 선택기를 쓰는 것이 좋습니다. 나는라이브러리를 가지고있다.이 라이브러리는 코딩 된 UI에 대한 간단한 확장 세트이다. 확장을 사용하면 jquery을 사용하여 검색 할 수있는 기능을 제공하는 다른 라이브러리가 있습니다

    var firstBox = browser.Find<HtmlCheckBox>().WithDataAttribute("automation-name", "firstBox"); 
    var firstBox = browser.FindAll<HtmlCheckBox>().First(); 
    

    작성합니다.

  • 관련 문제