2010-12-14 9 views
1

JSF2.0에 필드의 유효성을 검사해야하는 페이지가 있습니다. 이것은 교차 필드 유효성 검사이므로 필드를 UIComponents에 바인딩했습니다. 모든 세 필드는 <h:inputText>이므로 모두 HtmlInputText에 바인딩됩니다.JSF에서 셀렌 입력 텍스트가 작동하지 않습니다.

유효성 검사 방법은 단지 HtmlInputText의 값을 읽습니다. 앱을 실행하여 손으로 사용할 때 꽤 잘 작동합니다. 문제는 셀레늄이 값을 입력 할 때 작동하지 않는다는 것입니다. 셀렌 코드의 일부는 다음과 같습니다.

selenium.type("identifier=myForm:myTextField", "someText"); 

그래서 텍스트 필드에 텍스트를 입력합니다. 그것은 작동하고 텍스트가 실제로 볼 수 있습니다. 하지만 UIComponents에서 값을 읽는 유효성 검사 메서드를 디버깅 할 때 값은 null이고 "제출"을 클릭하면됩니다. 손으로 들어갔을 때 셀레늄이 들어갔을 때만 null이 아닙니다.

왜 그럴까요? 셀레늄이 효과가없는 이유는 무엇입니까? 그것은 손으로하는 것과 똑같은 일을하지만 손으로 ​​일하며 셀레늄으로는 작동하지 않습니다.

+0

나는 Selenium에 그런 문제가 없었습니다. 당신은 이것이 '바인딩'을 사용하는 구성 요소에만 해당된다는 것을 제안하는 것 같습니다. 따라서 바인딩없는 입력 필드가 작동합니까? 모델 값이 업데이트 되었습니까? Bean 액션 메소드가 호출 되었습니까? 'f : ajax'가 개입 했나요? 어쨌든, 여러분의'', 가능한 관리 빈 코드와 생성 된 JUnit/TestNG'@ Test' 메소드의 가장 작은 발췌가 도움이 될 것입니다. 그래서 우리는 문제를 재현하거나 오류를 더 잘 찾아 낼 수 있습니다. – BalusC

+0

감사합니다. @BalusC. 문제를 발견하고 내 다음 질문에 설명되어 있습니다 : http://stackoverflow.com/questions/4439716/ 문제는 숨겨진 필드가 유효성을 검사하려는 필드 앞에 페이지에있는 경우입니다. – amorfis

+0

셀레늄 문제는 정확히이 문제입니까? 이 숨겨진 필드가 JS로 채워져 있습니까? – BalusC

답변

0

JSF 생성 ID는 대개 사용자가 지정한 ID가 아닙니다. JSF 내가 class로 렌더링되는 styleClass 속성의 '고유 ID를'설정 선호 아이디의 담당으로 myForm라는 형태로 예를 myTextField에 대한 ID를 myForm:myTextField

+0

나는 이것을 고려했다. 어쩌면 예제를 너무 단순화했기 때문에 "form : myTextField"와 같은 것이 있어야합니다. 어쨌든 그것은 작동합니다. 셀렌에 의해 시작된 브라우저에서 텍스트가 채워지는 것을 볼 수 있습니다. – amorfis

0

있을 것이다. 그런 다음 해당 클래스로 입력을 선택합니다.

요소에 '고유 ID'이상이있을 수 있습니다. 그런 다음 '고유 ID'가 포함 된 클래스가있는 요소를 검색하는 것을 선호합니다. 테스트를 변경하지 않고 스타일을 변경할 수 있습니다.

관련 문제