2017-11-12 4 views
0

내가 사용하는 프레임 워크를 만들었습니다 Set Browser Implicit Wait 30 총 700 개의 테스트 케이스가 포함 된 50 개의 슈트가 있습니다. 몇 가지 테스트 케이스 (200 TC)는 엘리먼트가 존재하고 엘리먼트가 존재하지 않는지를 확인하는 단계가 있습니다. 나의 목표는 엘리먼트가 존재하는지 엘리먼트가 존재하지 않는지 30 초 동안 기다리고 싶지 않다는 것이다. 나는 Wait Until Element Is Visible ${locator} timeout=10을 사용해 보았는데 엘리먼트가 10 초만 기다릴 것으로 예상했지만 30 초를 기다렸다. 질문 : 누군가 내 프레임 워크에서 이러한 시나리오를 처리하는 올바른 방법을 도울 수 있습니까? 30 초가 될 때까지 기다리는 것에 동의하면 테스트 케이스를 완료하는 데 더 많은 시간이 걸릴 것입니다. 현재 20 * 200 초를 절약하려고합니다.로봇 프레임 워크 : 로봇 프레임 워크의 시간 초과 설정

답변

1

가장 간단한 해결 방법은 요소가 존재하지 않는 것을 확인하기 전에 암시 적 대기를 변경 한 다음 나중에 다시 변경하는 것입니다. 키워드 set selenium implicit wait으로이 작업을 수행 할 수 있습니다.

예를 들어, 키워드는 다음과 같이 보일 수 있습니다

*** Keywords *** 
verify element is not on page 
    [Arguments] ${locator} 
    ${old_wait}= Set selenium implicit wait 10 
    run keyword and continue on failure 
    ... page should not contain element ${locator} 
    set selenium implicit wait ${old_wait} 
-1

문제는 "암시 적 대기 대 명시 적 대기"문제를 다루고 있습니다. 인터넷을 검색하면 믹싱을 권장하지 않는 이유에 대해 많은 설명을 해줄 것입니다. 그러나 Jim Evans (IE Webdriver 제작자)는 이것을 stackoverflow answer에서 잘 설명했다고 생각합니다. 테스트 실행의 성능 향상

일반적으로 이들 중 하나 또는 둘 모두를 사용하여 수행됩니다 :

  1. 각 개별 테스트 병렬
  2. 테스트 실행의 지속 시간을 줄이십시오.

테스트 기간을 단축하는 것은 일반적으로 응용 프로그램이 성공적으로 그런 일이 순간을로드 할 때을 알고있는 스크립트 의 결과로 테스트중인 응용 프로그램의 완전한 통제에있는 것을 의미한다. 이는 낮음 또는 없음 암시 적 대기를 지정하고 Fluent 대기 (조건 발생 대기)로 독점적으로 작업하는 것을 의미합니다. 이렇게하면 응용 프로그램이 허용하는 속도로 테스트가 실행됩니다.

이것은 기술 수준에서 테스트하는 응용 프로그램을 이해하는 데 많은 시간을 투자 할 수도 있습니다. custom locator을 사용하면 모든 일반 SeleniumLibrary 키워드를 사용할 수 있으며 중앙 집중식 대기 기능을 사용할 수 있습니다.

테스트를 병렬로 실행하는 것은 독립 실행 형으로 실행되는 테스트부터 시작하며 다른 테스트에 종속되지 않습니다. Robot Framework에서 이것은 서로 독립적으로 실행할 수있는 Test Suite 파일을 갖는 것을 의미합니다. 우리 대부분은 병렬을 실행하고 나중에 로그 파일을 병합하기 위해 Pabot을 사용합니다.

여러 브라우저 응용 프로그램 테스트를 동시에 실행한다는 것은 동시에 두 개 이상의 브라우저를 실행한다는 것을 의미합니다. Chrome에서 테스트하는 경우 단일 호스트에서 수행 할 수 있습니다 (항상 권장되는 것은 아니지만). IE를 실행하면 여러 상자/세션이 필요합니다. 그런 다음 실행로드를 여러 시스템에 분산 시키려면 Selenium Grid 유형 솔루션이 필요합니다.

관련 문제