2017-04-05 1 views
0

이 질문에 대해 실제로 예 또는 아니요 대답을 찾지 못했습니다. Selenium WebDriver는 Thread.Sleep이나 다른 폴링 메소드를 사용하지 않고 약속이나 콜백을 사용할 수 있습니까?C#을 사용하는 VS의 Selenium Webdriver - 약속 사용

현재 NuGet을 통해 WebDriver가 추가 된 C#을 사용하는 자동화 솔루션에서 React 기반 Javascript 웹 페이지를 테스트합니다.

어떤 도움을

감사

+0

폴링이 포함되어 있지만'WebDriverWait'와'ExpectedConditions'는 아마 당신이하려는 일을 성취 할 것입니다. – mrfreester

답변

0

난 당신이 자바 스크립트 기반의 UI 페이지를 테스트하는 가정을 감사합니다. API (서비스)를 테스트하기 위해 WebDriver를 사용할 수 없습니다. Selenium WebDriver를 사용하면 웹 페이지 만 테스트 할 수 있습니다.

우리가 C#/Java와 같은 프로그래밍 언어를 사용한다면 셀레늄에서 3 type of waits (암시 적, 명시 적, 유창한) 만 사용할 수 있습니다.

현재 프로젝트에서 JavaScript를 사용하여 개발 된 웹 페이지를 테스트하고 있습니다. 이들을 테스트하기 위해 우리는 cucumberJS와 함께 Protractor (WebDriverJS 기반)을 사용하고 있습니다. JavaScript로 테스트 자동화를 작성하기 때문에 콜백 메소드가 있습니다. C#을 사용하여 테스트 자동화 콜백 메소드를 사용할 수 없다고 생각하면

+0

JavaScript 기반 웹 페이지를 테스트하는 것이 맞습니다. 전에 각도기를보고 있었지만 AngularJS보다는 회사가 React를 선택했습니다. 그들은 항상 C#을 사용하여 테스트 프레임 워크/솔루션을 개발했지만 JS 접근 방식이 더 좋았을 것이라고 생각하기 시작했습니다. – Grimzy

0

예 WebDriver C#에서는 Sleep을 사용하지 않기 위해 일부 조건을 기다릴 수 있습니다. 전형적인 예는 비동기 작업이 수행 된 후 표시 몇몇 DOM 요소 (들)에 대해 대기 할 것이다 :

var node = new WebDriverWait(driver, new TimeSpan(0, 0, 0, 3, 0)).Until(
       ExpectedConditions.PresenceOfAllElementsLocatedBy(
        By.XPath(".//*[contains(@ng-bind,'item.Value')]"))).First(); 
node.Click(); 

이것은 표시하는 XPath를 구비 매칭되는 적어도 하나 개의 원소에 대해 최대 3 초간 기다린다.

ExpectedConditions 클래스에는 존재, 가시성, 클릭 가능성 등을 테스트하는 다양한 정적 메소드가 있습니다.

사이드 노트 : 덧글과 관련된 - 어떤 WebDriver의 맛이 좋을지 모르지만, 매우 짧은 분석은 this article에서 수행되었습니다.

관련 문제