음, WebdriverIO은 자동화 프레임 워크의 보석이며 포괄적 인 documentation은 강력한 솔루션 중 하나입니다. 정확하게 지적했듯이 은 모두 비동기식입니다 (). 그러나 WDIO를 사용하면 기존의 순차 프로그래밍 백그라운드에서 온다면 완전 동기화 옵션을 사용할 수 있습니다. 합니다 (WDIO test-runner를 사용하지 않고)
첫째로, 당신은 읽기 최대 수있는 비트에 대한 JavaScript Promises, 특히 .then()
기능을해야합니다.
var webdriverio = require('webdriverio');
var options = { desiredCapabilities: { browserName: 'chrome' } };
var client = webdriverio.remote(options);
client
.init()
.url('https://duckduckgo.com/')
.setValue('#search_form_input_homepage', 'WebdriverIO')
.click('#search_button_homepage')
.getTitle()
.then(function(title) {
console.log('Title is: ' + title);
// outputs: "Title is: WebdriverIO (Software) at DuckDuckGo"
})
.end();
위의 방법을 사용하면 항상 체인에 명령이있을 것이다, 그러나 당신은 또한 .then()
문 내부 동기 명령을 사용할 수 있습니다. 디버그 목적
는 WebdriverIO 온다 아웃 오브 박스 .debug()
command의 형태로 아름답게 디자인 읽기 평가 - 인쇄 - 루프 (REPL inferface)와. 실행을 멈추기 전에 테스트 케이스에 추가하기 만하면 원하는 터미널에서 디버깅 할 수 있습니다.
!!! 참고 :.debug()
명령의 기본 시간 초과는 짧습니다. 그것을 늘리십시오.
위의 방법을 찾을 경우 통증에 - 더 - 엉덩이 다음, 왜 WDIO의 테스트 -를 사용하지 너의 인생을 더 쉽게 만들 러너? 당신은 마법사를 실행하여 시작할 수 있습니다
// if you installed the package globally, or you have the wdio
// binary in your PATH
wdio config
// or. from the root of your project
./node_nodules/.bin/wdio config
위의 프로젝트 루트에서 wdio.conf.js
파일을 산란한다. 테스트 주자가 테스트 케이스를 실행하는 데 사용됩니다. 테스트 주자는 또한 .client()
의 초기화를 추상화합니다. 더 이상 다루지 않을 것입니다. 테스트 케이스 (모카, 오이 또는 재스민)를 실행하기위한 프레임 워크를 선택하고 테스트 작성을 시작하십시오.
!!! 참고 : 지금부터 browser
이 드라이버 개체가됩니다. 또한 wdio.conf.js
파일이 테스트 사례를 실행하는 방법을 지원하도록 구성되었는지 확인하십시오.이 접근 방식을 지원하도록 sync-flag를 설정하십시오 (sync: true
). 테스트는 wdio wdio.conf.js
명령을 통해 실행할 수 있습니다.
귀하의 테스트 (모카를 사용하여) 다음과 같아야합니다 (사용 WDIO test-runner)
var expect = require('chai').expect;
describe("Testing Robots Emporium Test Suite", function() {
beforeEach(function() {
// ==> Your setup here <==
browser.url('http://www.kevinlamping.com/webdriverio-course-content/index.html')
var currentUrl = browser.getUrl();
expect(currentUrl).include("/index.html");
})
it("The FAQs was rendered properly", function() {
var height = browser.getCssProperty("ul.accordion", 'height');
// Added a debug step just to show you how easy it is to debug
browser.debug();
expect(height.parsed.value).to.be.above(300);
// The first element was expanded
var firstItemText = browser.getText('ul.accordion li:nth-of-type(1) div');
expect(firstItemText).to.contain('be of the metal type.');
});
afterEach(function() {
// ==> Your cleanup here <==
});
});
- 비동기 방법 : 이것은 내 이동이-하는 방법입니다
합니다. 그것은 당신에게 당신의 테스트 케이스 실행에 대해 가능한 최상의 제어를 제공하지만, 만약 당신이 막 시작한다면 나는 추천하지 않는다. 기본적으로 위의 예제이지만 모든 명령은 연결됩니다.
!!! 참고 :sync: false
플래그를 설정했는지 확인하십시오.
도움이 될지 알려주세요. 건배!
동기 실행을 위해'sync : false'가'sync : false'가되어야합니다.'assert'가 아닌'expect'를 포함하고 정리를 위해'afterEach'를 사용하기를 원할 것입니다. 'beforeEach'가 아닙니다. –
@ M.Herold에게 감사드립니다. 당신은 오류로 자리를 잡았습니다. 복사 - 그날 빨리 프로젝트에서 붙여 넣기. 힘내 친구 야! – iamdanchiv