2009-05-23 11 views
3

Firefox에서 웹 응용 프로그램의 성능을 확인하기 위해 PHP로 Selenium 테스트를 작성합니다. 나는 다른 성능 향상 (JQuery, PHP 5.3 업그레이드 등)을 비교하기위한 기준으로 이것을 사용하고 싶다. 웹 응용 프로그램은 매우 AJAX 강렬하고 지금까지 나는 하나의 문제로 만 실행했습니다.셀레늄 요소를 찾을 수 없습니다.

콘텐츠를 기존 div에로드하는 AJAX 호출이 있습니다. 내가 예상대로이 작동하지만, 내가 사업부에로드 된 모든 입력에 입력 할 때, 셀레늄 오류 "요소가 발생합니다

$selenium->waitForCondition('$(\'div[id="divId"]\').height() > 100', $timeout); 

: 호출이 내가 다음 코드 줄을 사용하고 완료되었는지 테스트하려면 입력 [@ id = "inputId"]을 찾을 수 없습니다 ".

입력 ID가 정확한지 확인하고 div 안에로드 된 다른 입력 요소로 시도했지만 그 중 아무 것도 작동하지 않습니다. 나는 또한 sleep (30)을 추가하여 요소가 DOM과 화면에 있는지 확실히 알 수 있었지만 다시는 차이가 없었다.

이 문제가 해결 될 때까지는이 시점에서 정말 고생하고 계속 진행할 수 없습니다. 어떤 도움이라도 대단히 감사합니다.

감사합니다, 제임스 암즈

답변

4

나는 몇 가지보고 싶은데 :

  1. 이 항목이로드되기 전에 당신에 대해 확인하고 조건이 사실이 있는지 확인합니다. 예를 들어, height이 의심스러운 것 같습니다. div에 현재 자녀가 있는지 테스트하는 것이 더 좋지 않습니까?

  2. 선택기를 작성하는 방법에 따라 Selenium은 input[@id='inputId']이 선택자의 실제 식별자라고 생각할 수 있습니다 (단 inputId이 아님). 그렇지 않은지 확인하십시오. inputId을 사용해보세요.이 식별자는 식별자이므로 충분해야합니다.

  3. 셀레늄은 까다 롭습니다. 다른 브라우저를 사용하여 다른 결과가 나올지 확인하십시오. 그렇다면 셀레늄이 잘 덮지 않는 영역을 나타낼 수 있습니다. 일반적으로는 거의 없지만 가능합니다. 그러나 이것이 확실한지 확인하기 전에 더 많은 코드를 볼 필요가 있습니다.

+1

2 번 문제가 해결되었습니다. 1 번까지는 예상대로 작동하지 않습니다. div에 이미 자식이 있고 특히 테이블이 있기 때문에 높이를 확인하고 있습니다. AJAX 호출은 테이블에 행을 추가합니다 (실제로 동일한 id로 새로운 행으로 대체). 어떻게하면 이걸 더 잘 감지 할 수 있을지 생각해? waitForElement * 함수에 대해 읽었지만 사용 가능한 것으로 보이지 않습니다. – JamesArmes

+0

JamesArmes : 통화가 행을 추가하는 경우 전화를 걸기 전에 행 수만 저장하십시오. 그런 다음 행의 수를 비교하여 '$ ("# tableId tr"). size()> [old size here]와 같이 변경되었는지 확인하십시오. –

+0

John Feminella :이 방법을 시도했지만, 평가가 바로 평가되는 것처럼 계속 실행되는 것처럼 보입니다. 필자가 알고있는 변수 대신 문자 그대로의 값을 입력하려고 시도했는데, 원래 테이블보다 많았고 차이가없는 새 테이블보다 작았습니다. 무슨 일이 일어날지를보기 위해 나는 또한 테이블보다 훨씬 높은 숫자로 설정하고 실행을 계속했습니다. – JamesArmes

관련 문제