2009-08-28 3 views
0

webrat을 셀렌 모드로 사용하면 visit이 예상대로 빨리 반환됩니다. 아무런 문제 없습니다.webrat/selenium이 페이지의 CSS를로드 할 때까지 기다리는 방법은 무엇입니까?

내 스타일이 다른 요소의 배경 이미지를보고 올바르게 적용된다는 주장을하고 있습니다. JS를 통해이 정보를 얻을 수 있지만 스타일 시트가로드되지 않았거나 테스트 중에 적용된 것처럼 보입니다.

요소가 나타날 때까지 기다릴 수 있지만 모든 스타일이 적용될 때까지 기다릴 수는없는 것을 알고 있습니다. 일반적인 딜레이를 넣을 수는 있지만 내장형 박편이나 느린 것처럼 보이므로 피하려고합니다.

분명히 내가 원하는 스타일을 알고 있기 때문에 나는 그들이 나타날 때까지 기다릴 수 있습니다. 나는 그런 도우미를 쓸 것이다. 그러나 나는 내가 보지 못했던 더 일반적인 메커니즘이 이미 있을지도 모른다고 생각하고 있었다.

쉬운 방법으로 페이지가 실제로 "준비"되었음을 감지합니까?

답변

2

그건 이상합니다. 나는 wait_for_page_to_load가 전체 페이지, 스타일 시트를 기다리는 것을 안다.

여전히 기다리지 않는다고 생각되면 wait_for_condition을 사용하면 자바 스크립트를 실행하고 is가 true를 반환 할 때까지 기다릴 수 있습니다. 다음은 그 예이다 : 페이지가 콜드 퓨전 (Cold Fusion) 부분이 여전히 정보를 표시 할 수있는 데이터베이스에 액세스에도 불구하고로드 및보고 때

@selenium.wait_for_condition "selenium.browserbot.getCurrentWindow().document.body.style.backgroundColor == 'white'", "60000" 
+0

감사합니다. 아마도 그렇게 할 것입니다. 실제로 요소의 현재 배경 이미지를 추출하는 데는 여러 가지 문제가있었습니다. 우리는 실제로 "호버 (hover)"를 시뮬레이트 할 수 없기 때문에 CSS : 호버 선택기가 작동하고 셀레늄에서 변경 사항을 안정적으로 감지하기 위해 JS를 사용하여 스타일을 변경했습니다. – ndp

0

우리는이에 달렸다. 후속 처리가 너무 일찍 발생합니다.

Selenium API의 추상 대기 클래스를 살펴보십시오. 특정 텍스트가 나타나는지 테스트 할 수있는 자신 만의 사용자 지정 until() 절을 작성할 수 있습니다.로드 할 텍스트가 사라지는 경우 (로드가 완료되면 사라지는 메시지의 경우) 또는에서 테스트 할 수있는 다른 이벤트를 작성할 수 있습니다. 셀레늄 레퍼토리. API 페이지에는 설정하는 데 많은 도움이되는 좋은 예가 있습니다.

관련 문제