2013-06-20 1 views
0

복잡한 구성 항목이있는 웹 응용 프로그램에서 다양한 구성 항목의 입력 필드를 포함하는 탭이 있습니다. 다른 탭의 필드에 데이터를 입력 한 다음 저장을 실행하는 테스트를 작성하고 있습니다. 각 항목을 입력 할 때 데이터 입력 컨트롤에 다음 단계로 이동하기 전에 선택한 텍스트 또는 값이 있는지 확인합니다. 때때로 다른 탭으로 이동하면 이전 탭의 필드에 입력 한 데이터가 손실되는 경우가 종종 있습니다.셀레늄 : 여러 탭이있는 양식으로 입력 된 데이터가 때때로 사라집니다.

어떻게 방지합니까?

Java에서 WebDriver와 함께 Selenium 2를 사용하고 Firefox로 테스트를 실행 중입니다.

나는 두 개의 필드에 문제가 있어요 : 자동 완성 기능

와 텍스트 입력 상자가

하나는 간단한 텍스트 입력 필드 두 번째입니다 두 필드는 마지막 사람 I를 입력 데이터는 이전에 있습니다 탭 전환. 탭을 전환하기 전에 데이터를 입력하는 다른 필드는 데이터를 잃지 않습니다. 새 탭으로 이동하기 전에 바로 상호 작용합니다.

입력 필드에 텍스트를 보내는 메서드의 끝에 JQuery가로드되었는지 확인하려고 시도했지만 도움이되지 않습니다. JQuery를 검사하는 메서드는 true를 반환하고 데이터는 가끔 지워집니다.

데이터를 수동으로 입력 할 때 이런 일이 발생하지 않으며 데이터가 하나의 탭에만 입력되는 다른 자동화 된 테스트에서는 발생하지 않습니다. 텍스트를 입력 한 경우 여기

는 자동 완성 필드의 HTML과 자동 완성 트리거 한 대기중인 입력이 없을 :

: 여기
<div id="s2id_autogen5" class="select2-container select2-container-multi select2"> 
    <ul class="select2-choices" style=""> 
     <li class="select2-search-choice"> 
      <div> 
       htm 
      </div> 
      <a class="select2-search-choice-close" tabindex="-1" onclick="return false;" href="#"></a> 
     </li> 
     <li class="select2-search-field"> 
      <input class="select2-input" type="text" autocomplete="off" tabindex="0" style="width: 10px;"></input> 
     </li> 
    </ul> 
</div> 

는 간단한 텍스트 입력 필드의 HTML 소스는 간단한 텍스트 입력 상자를 들어

, 나는 Keys.TAB를 보내는 경우 :

<td class="optionValue option_sr_test_object_url"> 
    <input id="option_d03e6450-5990-4a31-8e84-5b1af89d2c47_sr_test_object_url" type="text" placeholder="e.g. /path/testobject.html" value="/path/test.html"> 
    </input> 
</td> 
+0

조금 이상합니다. 아마도 (양식) 코드에 문제가있을 수 있습니다. 그렇다면 테스트는 목적을 수행합니다.) –

+0

데이터를 수동으로 입력 할 때 절대로 발생하지 않습니다. 또는 테스트 중에 탭을 전환하지 않으면 Selenium을 사용하여 데이터를 입력 할 때도 마찬가지입니다. – Selena

+0

나는 본다. 때로는 디버깅 할 때만 감지 할 수있는 JS 오류가있었습니다. 나는 단지 양식 코드를 수정할 것입니다. 또한 JS 이름 중복이 또 다른 아이디어 일 수 있습니다. 아마도 Selenium 스크립트가 양식의 코드와 상호 작용할 수 있습니다. 가능한 경우 양식의 필드 재설정에 대한 함수 이름을 변경하십시오. –

답변

0

:.

driver.switchTo을() 창 (driver.getWindowHandle());

탭을 전환하기 전에 해당 행을 실행할 때 이전에 입력 한 데이터가 지워지지 않았습니다. 나는 이것이 왜 효과가 있는지 모르며, 이것을 어떻게 해결책으로 찾았는지 기억하지 못합니다. 나는이 질문을 몇 달 동안이 대답으로 업데이트하겠다는 뜻을 지켰지 만, 나는 잊어 버렸다.

0

일 몇이 고민 후, 나는 내 문제에 대한 부분적인 해결책을 가지고 있습니다 다음 입력 필드로 포커스를 변경하려면 폼의 다른 탭으로 전환하면 USUALLY 데이터가 지워지지 않습니다. 텍스트를 입력하는 데 sendKeys 만 사용되는 경우에는 실행되지 않는 다른 필드 (다른 탭이 아닌)로 포커스가 전환 될 때 해고되는 이벤트가 있어야합니다. 그러나 경우에 따라 데이터가 가끔씩 사라집니다.

자동 완성 기능이있는 입력의 경우 필드에 텍스트를 성공적으로 입력하려면 Keys.RETURN 또는 Keys.TAB을 보내야했습니다. 이 필드를 사용하면 자동 완성 목록에서 옵션을 선택하거나 Enter 키 또는 Tab 키를 눌러 자동 완성 옵션 중 하나와 일치하지 않는 텍스트를 입력 할 수 있습니다. Keys.RETURN 또는 Keys.TAB을 사용하여 텍스트를 입력 한 후 Keys.TAB을 보내서 다른 필드로 포커스를 변경해야했습니다. 다시 말하지만, 데이터가 유지되고 포커스가 다른 입력 필드로 변경된 후에 만 ​​이벤트가 시작되도록하려면 실행해야하는 이벤트가 있지만 탭을 전환하면 발생하지 않는다고 생각합니다.

JQuery에 활성 요청이 없는지 확인하는 것이 도움이되지 않는 경우가 있습니다. 일부 경우 활성 쿼리가 없어도 데이터가 한 필드 또는 두 필드 모두에서 가끔씩 사라지기 때문입니다.

모든 상황에서이 문제를 해결하는 정말 간단한 방법이 필요합니다.나는 수면을 어렵게 코드하지 않는 것을 선호한다. 어쩌면 코딩되지 않은 방식으로 좋은 대기를 설정하기위한 더 나은 기술이 있을까요? 이 솔루션은 절대적이지 않기 때문에이 질문에 대한 대답으로 받아 들일 수 없기 때문에 내 문제에 대한 완벽한 해결책을 갖고 싶습니다. 나는 마침내 안정적으로 이런 일을 방지 뭔가 발견

관련 문제