2017-04-21 24 views
1

각도기를 사용하여 자동화 된 스크립트를 실행하는 중 하나에서 페이지 아래에 두 개의 드롭 다운 메뉴가 있습니다. 서로 위에. 그 중 두 개는 서로 다른 모델 이름을 가지고있는 것처럼 보입니다. 드롭 다운 메뉴 중 하나에서 요소를 성공적으로 선택할 수는 있지만 다른 하나는 선택할 수 없습니다. 왜 다른 사람이 작동하는지에 관해서는 내 머리를 망가 뜨리는 것입니다. 여기에 다음과 같이각도기 : 동일한 페이지에서 두 개의 드롭 다운 메뉴를 사용하면 하나의 드롭 다운 메뉴에서 요소를 성공적으로 선택할 수 있습니다.

<select class="form-control ng-pristine ng-invalid ng-invalid-required" ng-model="user.sourceOfFunds" required="" ng-class="{submitted:invalid}"> 
 
       <option value="">Select</option> 
 
       <option value="Savings">Deposit</option> 
 
       <option value="Inherited">Current</option> 
 
       <option value="Other">Savings</option> 
 
         </select>

element(by.model('user.sourceOfFunds')).sendKeys('Savings');

내 다른 드롭 다운 메뉴는 요소를 선택할 수있는 드롭 다운 메뉴에 대한 코드는 다음과 같습니다

<select class="form-control ng-pristine ng-invalid ng-invalid-required" ng-model="user.investFigure" required="" ng-class="{submitted:invalid}"> 
 
         <option value="">Select</option> 
 
         <option value="<20">Less than 20K</option> 
 
         <option value="20-50">20K-50K</option> 
 
         <option value="50-100">50K-100K</option> 
 
         </select>
내가 다운 메뉴 두 번째 드롭에서 항목을 선택하려고 할 때 1,363,210

element(by.model('user.investFigure')).sendKeys('Less than 20K'); 
or 
element(by.model('user.investFigure')).sendKeys('20'); 

내가 얻을 "을 (를) 찾을 수 없습니다 요소". 왜 이런 일이 벌어지고 있는지에 대해서는 약간의 손실이 있습니다.

+0

두 번째 드롭 다운 당신이 그것을에 키를 보낼 때 페이지에 존재 하시겠습니까? 만약 당신이'select '엘리먼트를 모두 발견한다면, $$ ("select"). map (function (elm) {return elm.getAttribute ("ng-model");}). 로그);'- 두 드롭 다운 모델이 모두 인쇄 된 것을 보시겠습니까? 감사. – alecxe

+0

답장을 보내 주셔서 감사합니다. 내가 제공 한 코드를 실행했을 때. user.sourceOfFunds 드롭 다운 메뉴에 포함 된 요소 만 인쇄했습니다. – Edmond

+0

오류가 설명되어 있습니다. 빠른 테스트를 해보고이 문장 앞에'browser.sleep (10000);'을 넣으십시오 - 아직 두 번째 드롭 다운 모델이 인쇄되지 않았습니까? – alecxe

답변

1

sendKeys을 사용하여 드롭 다운 옵션을 선택하면 작동하는 경우에도 이상하게 보입니다. @ alecxe의 훌륭한 제안을 감안할 때 문제는 가시성이지만 다른 방법을 시도하고 sendKeys이 문제인지 확인하십시오.

나는이 코드를 매일 여러 번 선택하여 테스트 할 때 문제없이 사용합니다. 아마 thusly 히

var selectOptionByText = function(text) { 
    return element(by.cssContainingText('option', text)).click(); 
}; 

전화 ... ... 당신을 위해 일 것이다

selectOptionByText('Less than 20'); 
selectOptionByText('20'); 
+1

답장을 보내 주셔서 감사합니다. 위의 '저축'드롭 다운 메뉴를 사용할 때 위의 작동하지만 selectOptionByText ('미만 20'); selectOptionByText ('20 '); "요소가 현재 표시되지 않고 조작되지 않을 수 있습니다." – Edmond