2017-03-24 2 views
0

페이지가로드되는 동안 다른 페이지 카테고리 사이를 탐색 할 때 표시되는 로딩 스피너에 대한 테스트 케이스를 자동화하려고합니다.로딩 테스트 스피너 셀렌

스피너에는 두 가지 상태가 있습니다. 표시되지 않는 경우 - "표시 : 없음"

페이지가로드되는 동안 표시 상태 - "display : block;" 내가 방법을

selectCategory ("갤러리") 다른 카테고리를 탐색 사용하고 때

문제는;

페이지가로드되는 동안 회 전자가 표시되는지 확인하는 방법을 잘 모릅니다. webdriver가 이미 사라졌고 카테고리가로드 될 때 스피너를 찾고있는 것과 같습니다.

+0

[ask]를 읽으십시오. 시도한 코드와 오류 메시지 등을 포함한 실행 결과를 제공하십시오. 또한 페이지 및/또는 관련 HTML에 대한 링크를 제공하십시오. – JeffC

답변

1

을 얻을하는 데 도움이 질문을 올바르게 이해하면 때때로 스피너가 표시되고 때로는 그렇지 않은 경우가 있습니다.이 경우에는 사라질 때까지 기다려야합니다. 나는 테스트를 쓰고있는 웹 페이지와 비슷한 상황에 처해있다. 그래서 나는 그것을위한 일종의 해결책을 썼다. 내가 요소에 대해 단 1 초를 삽입

public static boolean isElementDisplayed(WebElement element) { 
    try { 
     WebDriverWait wait = new WebDriverWait(driver, 1); 
     wait.until(ExpectedConditions.visibilityOf(element)); 
     return element.isDisplayed(); 
    } catch (org.openqa.selenium.NoSuchElementException 
      | org.openqa.selenium.StaleElementReferenceException 
      | org.openqa.selenium.TimeoutException e) { 
     return false; 
    } 
} 

우리가 알고 있기 때문에 여기에 대기 첫째

, 나는 isDisplayed 방법을 감싸고 단지 편의를 위해 거짓의 true를 돌려 있도록 몇 가지 예외 처리를 수행하는 도우미 함수 isElementDisplayed이 스피너가 곧 페이지에 나타나고 그 이상의 대기 시간은 없습니다.

public static void waitForElementToBeGone(WebElement element, int timeout) { 
    if (isElementDisplayed(element)) { 
     new WebDriverWait(driver, timeout).until(ExpectedConditions.not(ExpectedConditions.visibilityOf(element))); 
    } 
} 

내 응용 프로그램에서 긴 스피너 작업의 모든 경우를 커버 할 수 있었다 타임 아웃 시간을 조정함으로써 :

둘째, 나는 그것이 페이지에 감지되면 사라질하는 회 전자를 기다리는 방법이있다. 또한 스피너가 없을 경우 스피너를 기다리는 데 소요되는 시간을 피하기 때문에 테스트 실행 속도를 높일 수 있습니다.

1

검색어에 따라 selectCategory ("갤러리")에서; 갤러리 카테고리가로드되기 전에 스피너가 표시됩니다. 당신은 쿼리

다음 언급 한 바와 같이 속성에 의해 주장하려면 로더가 다음 =

Assert.assertTrue(driver.findElement(By.id("loader")).isDisplayed()); 

을 "로더"ID가있는 경우

당신은 방법의 몇에서이 주장을 시도 할 수 있습니다

, 단순히

말 이 link

Assert.assertEquals(driver.findElement(By.id("loader")).getCssValue("display"), "block or something as per requirement"); 

은 번호를 지정해 CSSValue에게

관련 문제