2013-08-23 2 views
16

각도기를 사용하여 선택 요소의 옵션 값을 얻으려고합니다. 그러나 옵션 요소를 찾을 수 없습니다.선택 요소의 옵션 값을 얻는 방법

HTML

<select ng-options="opions.c as options.n for option in options" ng-model="model"> 
    <option value="0">Option 1</option> 
    <option value="1">Option 2</option> 
</select> 

사양 파일

describe('testing select option', function() { 
    it('', function() { 
     ptor = protractor.getInstance(); 

     //This will not get the option required 
     ptor.findElement(protractor.By.binding('model')); 
    }); 
}); 

내가 사용할 수있는 기능을 발견하지 않았습니다 나는이 옵션 값을 잡을 수있는 방법을 찾을 수 없습니다 제공하지 않는 예외 또는 오류 메시지.

누구든지이 문제를 해결하는 방법을 알고 있습니까?

+0

이 스레드에서 아무도 op가 제기 한 질문에 답변하지 않았습니다. * 모든 대답은 downvoted. – 7stud

+0

@ 7stud 자신이 게시 한 답변을 보면 그가 알고 싶은 것이 그가 게시 한 질문과 실제로 다르다는 것을 알게됩니다. 그는 드롭 다운에서 선택한 값을 얻는 방법에 대해 묻는 반면, 대답은 실제로 드롭 다운에서 옵션 중 하나를 클릭하여 선택하는 방법입니다. 그는 그가 원하는 것을 알지 못합니다. – zsong

+0

나는 내가 원한 것이 전혀 도움이되지 않는다는 것을 알지 못했다고 생각한다. 이 스레드에 대한 건설적인 답변을 제공 할 수 없다면 대답하거나 언급하지 마십시오. 이것은 지역 사회가 회원들만 비난하는 데 도움이되지 않습니다. 대답에 선택 옵션 값을 표시하지 못했지만 코드는 의도 한 바를 보여줍니다. –

답변

4

다시 저는 각도기로 옵션 요소를 잡는 방법을 이제 알 수있었습니다.

아래 예제 코드는이를 수행하는 방법을 보여줍니다.

ptor.findElement(protractor.By.css('select option:nth-child(value of the option you require IE: the number)')).click(); 
33

나는 잘 작동 드롭 다운을 받고 몇 가지 문제가 있었다, 그것을 밖으로 작동 오늘 약간의 시간을 보냈습니다 (따라서 나는 다른 유용 발견 한 경우 누군가 여기를 공유하고 있습니다).

이전 각도기에서는 by.selectedOption이 있는데, 이는 실제로 by.select와 동일한 작업을 수행하지만 선택한 항목 만 반환합니다. 그래서, 위의 선택된 옵션의 텍스트를 얻기 위해, 당신은 할 수 : 당신은 자세한 내용을 원하는 경우 나 블로그 포스트를 작성

expect(element(by.selectedOption('model')).getText()).toEqual('Option 1'); 

, 그것은 또한 드롭 다운에서 옵션을 선택하는 도우미 함수를 다룹니다 http://technpol.wordpress.com/2013/12/01/protractor-and-dropdowns-validation/

selectedOption 단지 모델 파인더와 협력 반면가 상기 측정기의 어느 하나에인가 될 수 있으므로, 융통성이

expect(element(by.id('my_id')).element(by.css('option:checked')).getText(); 

: 각도기

최근 버전으로 대체이 기능을 삭제했습니다.

+0

우리와 함께 연구 정보를 공유해 주셔서 감사합니다! – Voles

+0

그러나 'value'속성의 값을 어떻게 얻습니까? getCssValue ('value')를 시도했지만 저에게는 효과가 없습니다. – Machtyn

+0

감사합니다. 내게 눈을 뜨게 한 것은'option : checked' 셀렉터였습니다. 이전에 내 크롬 콘솔에 적절한 요소를 반환했지만 '선택 : 선택됨'을 사용하지 않으려 고 시도했습니다. –

0

에 한번 사용 XPATH :

ptor.findElement(protractor.By.xpath('//select/option[1]'));

당신은 값을 기준으로 옵션을 선택하기 위해 같은 기술을 사용할 수 있습니다 :

protractor.By.xpath('//select/option[text()="Option 2"]')); 나는 형태를 설정하는이 작업을 수행하는 데 필요한 것

예 : 선택한 드롭 다운을 기반으로 입력이 표시됩니다. 예 :

+3

xpath를 사용할 때의 문제점은 개발이 진행됨에 따라 경로가 변경 될 수 있기 때문에 테스트가 취약 해지고 오류가 발생하기 쉽습니다. CSS를 사용하면 동일한 영향을 미칠 수 있습니다. 프런트 엔드 팀은 일부 프런트 엔드 개발자가 ID 태그를 좋아하지 않거나 PaulL이 권장하는대로 이러한 변경 사항이 필요하지 않음을 이해하는 한 최상의 솔루션입니다. –

-1

옵션 태그를 열거하려면 .all 메서드를 사용해보십시오. 먼저 부모가 액세스해야합니다.

element(by.model('model')).all(by.tagName('option')).then(function(arr) { 
     expect(arr.length).toEqual(2); 
}); 

영감에 대한 API 참조에서보세요

http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.all

편집 : 또한 XPath를 사용을 낙담 스타일 가이드를 따라 다음 http://www.protractortest.org/#/style-guide

0

을 얻을 수있는 방법이다 선택에서 값의 값 :

HTML

<select ng-options="opions.c as options.n for option in options" ng-model="model"> 
    <option value="Africa">Option 1</option> 
    <option value="Switzerland">Option 2</option> 
</select> 

을 .spec 파일

describe("Country <select>", function() { 

    it("should have 'Africa' as the value of the first option", function() { 

    browser.get('index.html'); 

    let all_options = element.all(
     by.options("opions.c as options.n for option in options") //use whatever string is assigned to the ng-options attribute in the html 
    ); 

    let first_option = all_options.get(0); //or all_options.first() 
    let second_option = all_options.get(1); //or all_options.last() 

    expect(
     first_option.getAttribute('value') 
    ).toEqual("Africa");       

    }); 

}); 

는() 값 클릭을 호출하여 프로그램 각도기로 선택 옵션이 될 수있는 선택한 옵션 (의를 얻으려면 옵션) :

expect(
     element( 
     by.model('model') //'model' is the string assigned to the select's ng-model attribute         
    ).element(     
      by.css('option:checked') 
     ).getAttribute('value') 
    ).toEqual('Swizerland'); 
관련 문제