2011-01-18 4 views
0

본질적으로 모든 셀렌 서버에 연결된 셀렌 클라이언트 인스턴스를 대량 생성합니다.captureNetworkTraffic()에 의한 Selenium 내부 서버 오류 원인?

한 번에 약 20 회 실행하면 제 상자에서 완벽하게 작동합니다.

그런 다음 captureNetworkTraffic() 메서드를 사용하는 기능을 추가하여 네트워크 트래픽을 JSON으로 읽어서 각 인스턴스의 해당 실행 로그에 통계를 기록 할 수있게했습니다.

그리고 갑자기 한 번에 3 ~ 4 개 이상 실행하면 거의 모든 것이 멋진 "내부 Selenium Server 오류"로 실패합니다!

네트워크 통계 정보를 기록 할 때와 사용하지 않을 때 여러 브라우저에서 서로 다른 시도를했는데 모두 동일한 결론을 가리 킵니다.이 기능을 사용하면 3 또는 4 이상을 실행할 수 없습니다.

누구나 이것이 아마도 이유를 알고 있습니까? 나는 이것이 단지 한 줄의 코드로 실패를 격리 시켰기 때문에 이것이 실패의 원인이라고 확신한다.

답변

0

주셔서 감사합니다 나는 범인을 발견했습니다 : java.util.ConcurrentModificationException this support post에 따르면, 네트워크 트래픽 통계를 처리하는 내부의 ArrayList가 원 공급기되지

을하고 때로는가 시도 동시에 수정 될 수 있습니다. 예를 들어 한 번에 40 개의 다른 클라이언트를 실행하려고 할 때!

0

나는 직장에서 셀레늄 스크립트를 상당히 많이 설치하고 있으며, 얼마 전에 모든 스크립트를 변경하여 모든 사람이 별도의 포트에서 자체 Selenium Server를 동적으로 시작하도록했습니다.

우선 랜덤 오류가 발생하는 비슷한 문제가 발생했습니다 (일부로드에서는 Selenium Server가 항상 잘 처리되지 않는 경우가 있음). 그러나 큰 장점은 스크립트를 실행하기 위해 셀렌 서버가 실행 중인지 확인하지 않아도된다는 것입니다.

확실히 더 많은 메모리를 사용하지만 Selenium Server 대신 자체 제품의 문제를 해결합니다.