Protaractor๋ฅผ 1.6.1, webdriver, chromedriver, jasmine์ 2.0์ผ๋ก ์ ๋ฐ์ดํธํ ํ ํ ์คํธ๋ฅผ ์คํํ๋ ค๊ณ ํ ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์์ต๋๋ค.
"Using ChromeDriver directly...
[launcher] Running 1 instances of WebDriver
Start test TC06_01_01_Binary_1_1
Started
Execute test TC06_01_01_Binary_1_1
Login as Admin
Execute script no 18
F
Failures:
1) TC06_01_01_Binary_1_1 TC06_01_01_Binary_1_1 Should be able to add record with different values
Message:
Failed: Error while waiting for Protractor to sync with the page: "angular could not be found on the window"
Stack:
Error: Failed: Error while waiting for Protractor to sync with the page: "angular could not be found on the window"
at C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:104:1
6
at C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\go
og\base.js:1582:15
at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\E2Euser\AppData\Roaming\npm\
node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1654:20)
at notify (C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdrive
r\lib\webdriver\promise.js:465:12)
Message:
Failed: Error while waiting for Protractor to sync with the page: "angular could not be found on the windo
w"
Stack:
Error: Failed: Error while waiting for Protractor to sync with the page: "angular could not be found on th
e window"
at C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:104:1
6
at C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\go
og\base.js:1582:15
at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\E2Euser\AppData\Roaming\npm\
node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1654:20)
at notify (C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdrive
r\lib\webdriver\promise.js:465:12)
Message:
Failed: Error while waiting for Protractor to sync with the page: "angular could not be found on the windo
w"
Stack:
Error: Failed: Error while waiting for Protractor to sync with the page: "angular could not be found on th
e window"
at C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:104:1
6
at C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\go
og\base.js:1582:15
at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\E2Euser\AppData\Roaming\npm\
node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1654:20)
at notify (C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdrive
r\lib\webdriver\promise.js:465:12)
1 spec, 1 failure
Finished in 1.409 seconds
[launcher] 0 instance(s) of WebDriver still running
[launcher] chrome #1 failed 1 test(s)
[launcher] overall: 1 failed spec(s)
[launcher] Process exited with error code 1"
Angular๋ฅผ ์ฐพ์ ์ ์๋ ์ด์ ๋ฅผ ์์ญ๋๊น? ๋๋ ์ด๊ฒ์ ์ด๋ป๊ฒ ์์ ํด์ผ ํฉ๋๊น?
๋๋ ์ค์ ๋ก OSX์์ ์ด์ ๋๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช์์ต๋๋ค.
... snip ...
Running "connect:test" (connect) task
Started connect web server on http://localhost:9001
Running "protractor:run" (protractor) task
Using the selenium server at http://127.0.0.1:4444/wd/hub
[launcher] Running 1 instances of WebDriver
Uncaught exception: Error while waiting for Protractor to sync with the page: "angular could not be found on the window"
[launcher] Process exited with error code 1
>>
Fatal error: protractor exited with code: 1
... snip ...
๊ทธ ํ ์ด๋ฆฐ Chrome ์ธ์คํด์ค๋ ์ค๋จ๋ ์ํ๋ก ์ด๋ ค ์์ต๋๋ค.
์ค๋ Mac OS์์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ชจ๋ ํฐ๋ฏธ๋๊ณผ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ๊ณ ์ด ์ค๋ฅ๋ฅผ ๋ค์ ์ฌ์ญ์์ค(์ต์ํ ๋ฉ๋ฆฌ).
2.0.0
๋ฒ์ ์์๋ ์ด๊ฒ์ ๊ฒฝํํ๊ณ ์์ต๋๋ค.
์ฌ์ง์ด ๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค.
2015๋
4์ 1์ผ ์์์ผ ์ค์ 11:03 Walter H. Roman [email protected]
์ผ๋ค:
๋ฒ์ 2.0.0์์๋ ์ด๊ฒ์ ๊ฒฝํํ๊ณ ์์ต๋๋ค.
โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/angular/protractor/issues/1760#issuecomment -88355894.
์ ๋ ์
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ด ๋ฌธ์ ๊ฐ ์ข ๋ฃ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
1.8.0์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
onPrepare
ํจ์ ๋ด์์ browser.get()
๋ฅผ ํธ์ถํฉ๋๊น? #1978 ์ฐธ์กฐ
๋๋ browser.get()์ ์ฌ์ฉํ๊ณ ์์ง๋ง onPrepare๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. angular todomvc์ ๋ํด ์ด ์์ ๋ฅผ ์คํ ์ค์ ๋๋ค - https://github.com/mknabe/angular-testing-starter/blob/ ๋ง์คํฐ/ํ ์คํธ/e2e/scenarios.js
์ถฉ๋...
@cm325 ์ ๊ฐ์ด 2.0.0์ ์คํํ ๋ "์ฐฝ์์ ๊ฐ๋๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค" ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง๋ง 1.8.0์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
์ถฉ๋!
v2.1.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ ํ์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 1.8.0์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํด์ผ ํ์ต๋๋ค.
OSX์์๋ ์ด์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์
๊ทธ๋์ ๋ด ํ์ด์ง ์์ฑ์ ์ค ํ๋์์ ๋ค์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
this.currentUrl = browser.getCurrentUrl();
NS
this.currentUrl = function(){
return browser.getCurrentUrl();
};
๋ด ํ ์คํธ๋ ์ ์คํ๋๊ณ ์์๊ณ ์๋ฌด ์ด์ ์์ด ์ด๊ฒ์ด ๋ํ๋ฌ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ๊ธฐ ์ํด ์์คํ ์ด๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์์ต๋๋ค. ๋ค์ด๊ทธ๋ ์ด๋ํ ์ ์์ต๋๋ค. 2.0์ด ํ์ํฉ๋๋ค. currentUrl์ ๋ํ ๋ง์ง๋ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ํํ๋๋ฐ ๊ทธ๊ฒ๋ ๋์์ด ๋์ง ์์ต๋๋ค. ์ด๋ค ๋์๋ ๊ต์ฅํ ๊ฒ์ ๋๋ค..
์์์ผ์๋ ๊ฐ์ ๊ฒฝํ์ ํ๊ณ ์์ต๋๋ค. ์ง๋ ๊ธ์์ผ์๋ ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์๊ณ ์์์ผ๋ถํฐ ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ๋ก๋ํด์ผ ํ ๋(Angular๊ฐ ์๋ ํ์ด์ง) ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ํ ์คํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ๊ฐ๋๊ธฐ๋ฅผ 1.8.0 ๋ฐ 1.4.0์ผ๋ก ๋ค์ด ๊ทธ๋ ์ด๋ํ๋ ค๊ณ ์๋ํ์ง๋ง ํ๋ ์ ์ํฌ๋ฅผ 'jasmine2'๋ก ๋ณ๊ฒฝํ๋ ค๊ณ ์๋ํ์ง๋ง ๋ค์ ์๋ฌด ๊ฒ๋ํ์ง ์์์ต๋๋ค. ๋๋ onPrepare์์ browser.get์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๋ฌด์์ ์๋ํ ์ ์๋์ง ๋ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ค๋ฅธ ์ ์ ์ฌํญ์ด ์์ผ๋ฉด ๋ฌด์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์๋ํ ์ ์์ต๋๊น? ๊ณ ๋ง์!
์ ๋ ์ฌ๊ธฐ์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์ต๋๋ค. : ๋ ๋ง์ ๊ด์ฌ์ ๋๊ธฐ ์ํด ์ฃผ๋จน์ ์ฅก๋๋ค .
2.1.0์์ 1.8.0์ผ๋ก ๋ค์ด ๊ทธ๋ ์ด๋ํด๋ ์ฆ์ ํด๊ฒฐ๋์ง ์์์ต๋๋ค ...
๋๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์๊ณ ์์ด. ๋ฐฉ๊ธ ์ค์ด-js, chai ๋ฐ chai-as-promised๋ก ๊ฐ๋๊ธฐ๋ฅผ ์ค์ ํ์ต๋๋ค. ๊ธฐ๋ณธ ์ํ ๋จ๊ณ์ ๋ํด ํ ์คํธํ๋ ๋ ๊ฐ์ง ๋งค์ฐ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋ํ SystemJS๋ก ๋ฏธ๋ฆฌ ๋ณํ๋์ด ๋ก๋๋ ES6์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ผ๊ด๋๊ฒ ์ฌํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์์ต๋๋ค. ์ง๊ธ ๋น์ฅ์ ํ ์ ์์ง๋ง ์๋์ ์ผ๋ก ์คํจํ๋๋ก ๋ด ํน์ ๋จ๊ณ ์ค ํ๋๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ๊ทธ๊ฒ์ด ์ฒซ ๋ฒ์งธ/๋ง์ง๋ง์ผ๋ก ์คํ๋๊ณ ์๋์ง ๋๋ ์ ๊ทธ๊ฒ์ด ํน์ ํด์ผ ํ๋์ง ํ์คํ์ง ์์ต๋๋ค.
๋ ๋จ๊ณ ๋ํผ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
var Promise = require('es6-promise').Promise;
var World = require("../support/world.js").World;
module.exports = function() {
this.World = World;
this.Given(/^Something exists$/, function() {
browser.get('http://localhost:3000/');
return Promise.all([
expect(browser.getCurrentUrl()).to.eventually.equal('http://localhost:3000/#/dashboard'),
expect(browser.getTitle()).to.eventually.equal('Dashboard')
]);
});
};
์๋ ์๋ค์! ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ ํ๋ก์ ํธ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ถํํ๋ ๋ฌธ์ ๊ฐ ๊ฐ๋๊ธฐ ๋ฐ ์ฌ์ค๋ฏผ ๊ธฐ์ ๋ฒ์ ๋๋ ๋ค๋ฅธ ๋ฒ์ ์ ์๋์ง ์ ํํ ์์ง ๋ชปํฉ๋๋ค. ํ ์คํธ์ ์ด๋ ์์ ์์ ์ฐ๋ฆฌ๋
element(by.id('logIn')).click().then(function (p) {
browser.driver.wait(browser.driver.isElementPresent(by.id('Email')));
});;
๊ทธ๋ฆฌ๊ณ ๊ทธ์ ๊ฐ์ ๋ช ๊ฐ์ง๊ฐ ๋ ์๊ณ ์ด๋ฌํ ๋๊ธฐ๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์ด๋ ๊ฒ ํด๊ฒฐํ๋ ๊ฒ์ด ์ต์ ์ด ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ํ์ฌ๋ก์๋ ์๋ํ๊ณ ์์ผ๋ฉฐ ์๋ํ๊ฒ ๋ง๋๋ ๊ฒ์ด ์ฒซ ๋ฒ์งธ ์์ ์ด์์ต๋๋ค.
@Yok86 ๋ฐฉ๊ธ ์์ ์ ์๋ํ๊ณ ์๋ํ์ต๋๋ค! :+1:
์ด๊ฒ์ ์ฐ๋ฆฌ์ ํด๊ฒฐ ๋ฐฉ๋ฒ๋ณด๋ค ๊น๋ํฉ๋๋ค. ์ฐ๋ฆฌ๋ onPrepare
ํธ๋ค๋ฌ์ ๋์ browser.debugger()
๋ฅผ ๋์ก๊ณ ํ๋ ์ด์์ ํ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ฒ๋ผ ๋ณด์์ง๋ง ์ ๊ทธ๋ฐ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ด๊ฒ์ ํจ์ฌ ๊นจ๋ํฉ๋๋ค.
browser.driver.findElement(by.xpath("//*[@id='submit']")).click().then(function(p) {
browser.driver.wait(browser.driver.getTitle().then(function (title) {
return title == 'AppName';
}));
});
๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์คํจ: ๊ฐ๋๊ธฐ๊ฐ ํ์ด์ง์ ๋๊ธฐํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ค๋ฅ: "[ng:test] getTestability\ nhttp://errors.angularjs.org/1.4.5/ng/test์ ๋ํ ์์ ์ธ์์ ๋ํ ์ธ์ ํฐ๋ฅผ ์ฐพ์ ์ ์์"
์คํ:
์ค๋ฅ: ์คํจ: ๊ฐ๋๊ธฐ๊ฐ ํ์ด์ง์ ๋๊ธฐํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ค๋ฅ: "[ng:test] getTestability\ nhttp://errors.angularjs.org/1.4.5/ng/test์ ๋ํ ์์ ์ธ์์ ๋ํ ์ธ์ ํฐ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค
์คํ์์ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:1482:17)
buildExpectationResult์์ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:1452:14)
Spec.Env.expectationResultFactory์์ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:583:18)
Spec.addExpectationResult์์ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:324:34)
Suite.addExpectationResult์์ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:2123:38)
Env.fail์์ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:894:25)
Function.next.fail์์ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:1806:19)
c:\Program Filesnodejsnode_modules\protractornode_modules\jasminewd2index.js:101:16
[๊ฐ์ฒด ๊ฐ์ฒด].promise.ControlFlow.runInFrame_์์ (c:\Program Filesnodejsnode_modules\protractornode_modules\selenium-webdriver\lib\webdriver\promise.js:1877:20)
[๊ฐ์ฒด ๊ฐ์ฒด].promise.Callback_.goog.defineClass.notify์์ (c:\Program Filesnodejsnode_modules\protractornode_modules\selenium-webdriver\lib\webdriver\promise.js:2464:25)
[๊ฐ์ฒด ๊ฐ์ฒด].promise.Promise.notify_ (c:\Program Filesnodejsnode_modules\protractornode_modules\selenium-webdriver\lib\webdriver\promise.js:563:12)
Array.forEach์์(๋ค์ดํฐ๋ธ)
Object.goog.array.forEach์์ (c:\Program Filesnodejsnode_modules\protractornode_modules\selenium-webdriver\lib\goog\array\array.js:203:43)
[๊ฐ์ฒด ๊ฐ์ฒด].promise.Promise.notifyAll_ (c:\Program Filesnodejsnode_modules\protractornode_modules\selenium-webdriver\lib\webdriver\promise.js:552:16)
goog.async.run.processWorkQueue์์ (c:\Program Filesnodejsnode_modules\protractornode_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
process._tickCallback์์ (node.js:356:9)
phantomjs๋ก ์คํํ ๋ OSX์์ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. Chrome์์ ์ ์๋ํฉ๋๋ค.
๊ฐ๋๊ธฐ๊ฐ ํ์ด์ง์ ๋๊ธฐํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ค๋ฅ: "[ng:test] http://errors.angularjs.org/1.4.3/ng/test "
์ฌ๊ธฐ์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ด์ ์ ์์ ์ผ๋ก ์๋ํ์ง๋ง ์ด์ ์๋์ ๋ฉ์ท์ต๋๋ค.
๋๋ ๋ํ์ด ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์๋ค
+1 ์ง๋ ๊ธ์์ผ์ ์ ์์ ์ผ๋ก ์๋ํ์ง๋ง ์ง๊ธ์ ์๋ํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ๊น๋ค๋กญ์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๊ฒฉ๋ฆฌ๋๊ณ ์ฌํ ๊ฐ๋ฅํ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ป๊ธฐ ์ํด ๋ ธ๋ ฅํ ์ ์์ต๋๊น? ๋๋ ์ด๊ฒ์ ์ค์ค๋ก ์์ ์ ์ผ๋ก ์ฌํํ ์ ์์๋ค(์์งํ ๋งํด์, ๋๋ ์์ง ํํค์น์ง ์์๋ค).
์ฌ๊ธฐ์ ์๋ ์ผ๋ถ ๊ฒ์๋ฌผ์ ์์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
2.x.x
( 1.6.x
์ OP ๋ฌธ์ ์ ์ธ)๋ถํํ๋ ๊ฝค ๊ด๋ฒ์ํฉ๋๋ค :(
@jessiahr @navarrojp @AndreasMaier ์ด ๋๋ฒ๊น ์ ๋๋ ๋ฐ ๊ด์ฌ์ด ์์ผ์ญ๋๊น? ์ฐ๋ฆฌ๋ ์กฐ์ ์ ์ํด gitter room์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋์ผํ ๋ฌธ์ :
2.5.1
@mrzmyr ์์ธํ ๋ด์ฉ ๊ฐ์ฌํฉ๋๋ค. ์ด๊ฒ์ ์ฌํํ ์ ์๋ ๊ตฌ์ฑ ๋ฐ ๊ฒฉ๋ฆฌ๋ ์์ ์ฌ์์ ์ป์ ์ ์์ต๋๊น?
@NickTomlin ์์ ์ฌ์์ด๋ ์ด์ ์ ์ฌํ ๊ฒ์ ๊ฐ๊ณ ์ถ์ต๋๋ค. ๊ฐ์ ํ๊ฒฝ์์ ์ฌํํ๋ ๊ฒ์กฐ์ฐจ ๋ถ๊ฐ๋ฅํ์ต๋๋ค. ๋๋ฅผ ์ํด ํ์ด๋ฐ ๋ฌธ์ ์ฒ๋ผ ๋ณด์ ๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ด ๊ตฌ์ฑ์๋ onPrepare๊ฐ ์๊ณ ์ด ์ค์ด ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ .๋๋ผ์ด๋ฒ.get(targetUrl);
์ด ์ค๋ฅ๋ ์๊ฐ์ ์ฝ 40%์์ ๋ฐ์ํฉ๋๋ค. ์ด์งธ์.
์ฌ์ค๋ฏผ 2.XX
@mrzmyr ์ ๋์ผํ ๋ฌธ์ ๊ฐ
๋ฒ์ : ๊ฐ๋๊ธฐ์ ์ต์ ๋ฒ์
ํ๋ ์์ํฌ: ์ฌ์ค๋ฏผ 2
๋ธ๋ผ์ฐ์ : ํฌ๋กฌ
ํ๋ซํผ: OSX
๊ฐ๋ ํ์ด์ง
1.8๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ์ฌ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋์ง ํ์ธํ๊ฒ ์ต๋๋ค. ํ ์คํธ๊ฐ ์ด์ ์คํ๋์์ผ๋ฏ๋ก ์ด์ํฉ๋๋ค.
์ฌ๊ธฐ ํํ ๋ฆฌ์ผ์ ๋ฐ๋ฅด๋ฉด ์ฌํ ๊ฐ๋ฅํ ํ ์คํธ ์ผ์ด์ค๊ฐ ์ฌ๊ธฐ ์ฐธ์กฐ. ํํ ๋ฆฌ์ผ์ด ๊ฐ์ฅ ์ ํํ์ง๋ ์์ง๋ง ๋ฌธ์ ๋ฅผ ์ฌํํฉ๋๋ค.
๊ฐ๋๊ธฐ@2.5.1
ํ๋ซํผ: OSX
๋ชจ๋
ํ๋ ์์ํฌ: Jasmine2
๋ธ๋ผ์ฐ์ : ํฌ๋กฌ
์ด ์ค๋ฅ ๋ฉ์์ง๋ ์ผ๋ฐ์ ์ผ๋ก browser.get
์ด์ธ์ ๊ฒ์ ์ฌ์ฉํ์ฌ ์ผ์ข
์ ํ์์ด ์ํ๋์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค. browser.get
, URL ๋ณ๊ฒฝ ์ธ์๋ ๊ฐ๋๊ฐ ๋ก๋๋๊ณ ๊ฐ๋๊ธฐ๋ฅผ ๋ถํธ์คํธ๋ฉํ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
@61ue5peed ๋ฌธ์ ๋ browser.driver.get
๊ฐ ๋์ผํ ๋๊ธฐํ ๋ฐ ๋ถํธ์คํธ๋ฉ์ ์ ๊ณตํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. ๊ทํ์ ์์ธ์์ ์ ๋ browser.driver.get
์์ browser.get
@jennapederson ๊ทํ์ ๊ฒฝ์ฐ #becomeAwesome
๊ฐ ๋งํฌ๋ผ๊ณ ๊ฐ์ ํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ๋ฉด ๋๊ธฐํ ๋ฐ ๋ถํธ์คํธ๋ฉ ์์ด ํ์ํฉ๋๋ค. ๊ทํ์ ๊ฐ์ ๊ฒฝ์ฐ ๋งํฌ๋ฅผ ํด๋ฆญํ ํ browser.refresh
์ถ๊ฐํฉ๋๋ค.
๋ค๋ฅธ ์ ๋ณด๋ค๋ ๋น์ทํ ๊ฒ ๊ฐ์ผ๋ ์ด ๋ฌธ์ ๋ฅผ ๋ง์น๊ฒ ์ต๋๋ค. ์ฌ๋๋ค์ด ํ์์ ์ํด borwser.get
์๋ง ์์กดํ๋ ํ
์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ์ ๋ฐํ ์ ์๋ค๋ฉด ์ ๋ฌธ์ ๋ฅผ ์ฌ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด ๋ฌธ์ ๋ v 3.3.1์์ ์ฌ์ ํ ์ฌํ ๊ฐ๋ฅํฉ๋๋ค.
๋ด ํํ์ด์ง๋ก ์ด๋ํ๊ธฐ ์ํด browser.get์ ์ฌ์ฉํ๊ณ ์๋๋ฐ ์ฒ์์๋ ์คํจํฉ๋๋ค.
์ฌ๋ฌ๋ถ ๋ชจ๋์๊ฒ ์๋ ค์ฃผ๊ธฐ ์ํด -> ์ ๊ฒฝ์ฐ์๋ Facebook API๋ฅผ ๋ก๋ํ๋ ์ธ๋ถ ๊ฐ๋ ๋ชจ๋์ด ๋ฌธ์ ์์ต๋๋ค. ํ์ด์ค๋ถ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ๋ ์ฑ ๋ด์ dom ๊ตฌ์กฐ์ ์ก์ธ์คํ์ฌ ๋ณ๊ฒฝํ๋ ค๊ณ ํ์ต๋๋ค. ํ ์คํธ ์ Facebook ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ์ง ์๋๋ก ๋ชจ๋์ ๋ณ๊ฒฝํด์ผ ํ์ต๋๋ค.
์ด ๋ฌธ์ ๋ ์ดํดํฉ๋๋ค. ์์ฃผ๋ ์๋์ง๋ง ๋ฌธ์ ๊ฐ ๋ ์ ๋์ ๋๋ค. ๊ทธ๊ฒ์ ์ผ๋ฐ Angular ํ์ด์ง์ด๋ฉฐ ์ธ๋ถ ๋๋ ๋น ๊ฐ์ด ์์ต๋๋ค. ํ ์คํธ๋ ๋๋ถ๋ถ ํต๊ณผํ์ง๋ง ๋๋๋ก ์ด ์ค๋ฅ๊ฐ ๋ํ๋ ์คํจํฉ๋๋ค. ๋ชจ๋ฌ์ด ๋ก๋๋ ๋งํผ ์ถฉ๋ถํ ์ค๋ ๊ธฐ๋ค๋ฆฌ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํญ์ ๊ฐ์ ๋จ๊ณ/ํ ์คํธ์ ์์ต๋๋ค.
๊ฐ๋๊ธฐ: 3.2.2
์ค์ด ๊ฐ๋๊ธฐ: 0.4.0
@drcjones
element(by.css(selector)).isPresent().then(ํจ์(๊ฒฐ๊ณผ) {
if (๊ฒฐ๊ณผ) {
element(by.css(selector)).click();
}
}, 20000);
์๋ ํ์ธ์,
๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์ ์ ๋ชฉ์ ์ป์ผ๋ ค๊ณ ํฉ๋๋ค. ๋ด๊ฐ ๋ญ๊ฐ ์๋ชปํ๊ณ ์์ต๋๊น?
Failed: Angular could not be found on the page http://thetestroom.com/jsweba
pp/ : ๊ฐ๋๊ฐ ์ ๊ณต๋์ง ์์ resumeBootstrap
์คํ:
์ค๋ฅ: http://thetestroom.com/jswebap ํ์ด์ง์์ Angular๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
p/ : ๊ฐ๋๊ฐ ์ ๊ณต๋์ง ์์ resumeBootstrap
` beforeEach(ํจ์() {
browser.get('http://thetestroom.com/jswebapp/');
});
it('should test webpage title', function() {
expect(browser.getTitle()).toEqual('Zoo Adoption | Home');
});`
์ด๋ค ํผ๋๋ฐฑ๋ ์ข์ ๊ฒ์ ๋๋ค.
์ ๋ชฉ์ ์ป๊ธฐ ์ ์ Angular๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ๋๋ ์์์ ํน์ URL ๋ณ๊ฒฝ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ๋ณด์ง ๋ชปํ์ต๋๋ค. ์ด๊ฒ์ด ๋์์ด ๋๋์ง ํ์ธํ์ญ์์ค.
browser.get(testUrl).then(ํจ์() {
๋ธ๋ผ์ฐ์ .๋๊ธฐ(ํจ์() {
๋ฐํ browser.getCurrentUrl().then(function(url) {
๋ฐํ /thetestroom/.test(url);
});
}, 10000);
});
์ฐ๋ฆฌ๋ IE9์์ ์ด ๋ฌธ์ ๋ฅผ ๊ฐํ์ ์ผ๋ก ๋ณด๊ธฐ ์์ํ์ต๋๋ค. 3.2.1์์ 3.3.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ฉด ์ค๋ฅ๊ฐ ์ค์ง๋์์ต๋๋ค.
๋์ผ - 3.2.1์์ 3.3.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
๋๋ ๊ฐ์ ์ค๋ฅ๊ฐ ์์ต๋๋ค. ํฌ๋กฌ์ ์ฌ์ฉํ์ฌ. ๋ชจ๋ ์ ์์ ๊ต์ฅํฉ๋๋ค. ๊ฐ์ฌ ํด์
config.js
export.config = {
์ง์ ์ฐ๊ฒฐ: ์ฌ์ค,
allScriptsTimeout: 1000,
// ์น๋๋ผ์ด๋ฒ ์ธ์คํด์ค์ ์ ๋ฌ๋ ๊ธฐ๋ฅ.
๋ฅ๋ ฅ: {
'๋ธ๋ผ์ฐ์ ์ด๋ฆ': 'ํฌ๋กฌ'
// '๋ธ๋ผ์ฐ์ ์ด๋ฆ': 'ํ์ด์ดํญ์ค'
},
// ์ฌ์ฉํ ํ๋ ์์ํฌ. ์์ค๋ฏผ์ ์ถ์ฒํฉ๋๋ค.
ํ๋ ์์ํฌ: '์ฌ์ค๋ฏผ',
// ์ฌ์ ํจํด์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ํ์ฌ ์์
๋๋ ํ ๋ฆฌ์ ์๋์ ์
๋๋ค.
// ๊ฐ๋๊ธฐ๊ฐ ํธ์ถ๋ฉ๋๋ค.
// ์ฌ์: ['example_spec.js'],
์ฌ์: ['*_spec.js'],
์
๋ ๋ ์ฃผ์: ' http://localhost :8080/McacApp/index.html',
baseUrl: ' http://localhost :8080/McacApp/index.html',
// ๊ฐ๋๊ธฐ-conf.js
rootElement: '.mcacApp',
// Jasmine์ ์ ๋ฌํ ์ต์
.
jasmineNodeOpts: {
๊ธฐ๋ณธ ์๊ฐ ์ด๊ณผ ๊ฐ๊ฒฉ: 30000,
baseUrl: 'http://localhost:8080/McacApp/index.html',
jasmineNodeOpts: {
onComplete: null,
isVerbose: false,
showColors: true,
includeStackTrace: false
}
}
};
example.spec.js
describe('๋น ๋ฅธ ํ ์คํธ', function() {
it('Should do something', function() {
browser.get('http://localhost:8080/McacApp/index.html');
element(by.model('ctrl.formData.emailAddress')).sendKeys('emailAddress');
// element(by.model('ctrl.formData.employmentType')).sendKeys('employmentType');
element(by.xpath("//button[text()='Confirm']")).click();
browser.sleep(10000);
//expect (element(by.xpath("//ui-view/div/div[2]/div[1]/a/div/p"))).toEqual("Manage users and teams.");
//expect(element(by.xpath("//ui-view/div/div[2]/div[2]/a/div/p"))).toEqual("Define metrics that drive your business.");
//expect(element(by.xpath("//ui-view/div/div[2]/div[3]/a/div/p"))).toEqual("Create and modify leaderboards that display metrics.");
});
});
@Karpo72 : ์ด๋ฉ์ผ ๋ฐ ์ฐ๋ฝ์ฒ ํ์ธ์ ์ํด ์ด ๋ฌธ์ ์ ๋ํ ์๋ฅผ ์ ๊ณตํด ์ฃผ
์ค๋ฅ: ์คํจ: ๊ฐ๋๊ธฐ๊ฐ ํ์ด์ง์ ๋๊ธฐํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ค๋ฅ: "[ng:test] http://errors.angularjs.org/1.4.7/ng/test "
๊ฐ์ฌํฉ๋๋ค.
@reddynr ๋๋ ๋น์ ์ด ํ์ด์ง๋ฅผ .get()ํ ํ์ ์์๋ ๋ฌด์์ด๋ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ๋ณด์ง ๋ชปํ์ต๋๋ค. ๋น์ ์ํด์ผํฉ๋๋ค. ์ด ์ค๋ ๋์์ ์์ ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
๊ทํ์ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
browser.get(..).then(function() {
browser.driver.wait(browser.driver.isElementPresent(by.model('ctrl.formData.emailAddress')));
// all remaining sendKeys, submit and assert code here.
});
@srajagopalan1712 ํผ๋๋ฐฑ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง ์ฌ์ ํ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ฌ๊ธฐ ๋ด ๊ตฌํ์ด ์์ต๋๋ค.
์ด๋ค ์ ์์ด ์์ผ๋ฉด ๊ฐ์ฌํฉ๋๋ค.
์ค๋ช
('mcacapp', function() {
it('์ด๋ฉ์ผ ๊ธฐ๋ฅ ํ
์คํธ', function()
{
browser.get('http://localhost:8080/McacApp/index.html').then(ํจ์() {
๋ธ๋ผ์ฐ์ .๋๊ธฐ(ํจ์() {
๋ฐํ browser.getCurrentUrl().then(function(url) {
๋ฐํ /thetestroom/.test(url);
});
}, 10000);
});
์์(by.model('ctrl.formData.emailAddress')).sendKeys('[email protected]');
var ์ธ์ฌ๋ง = ์์(by.binding('ctrl.formData.emailAddress'));
๊ธฐ๋(์ธ์ฌ๋ง.getText()).toEqual('[email protected]');
});
});
url์ด ๋ณ๊ฒฝ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ emailAddress ์์๋ ๋ํ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ญ์์ค. ๋ํ browser.driver.wait ๋ฐ browser.driver.getCurrentUrl์ ์ฌ์ฉํด ๋ณด์ญ์์ค. get()...{} ๋ธ๋ก ๋ด์์ ๋ค๋ฅธ ๋ชจ๋ ํ ์คํธ ์ฝ๋๋ ์ด๋ํฉ๋๋ค.
@srajagopalan1712 ํผ๋๋ฐฑ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์์ ์์ ๋ฅผ ์ ๊ณตํด ์ฃผ์๋ฉด ํฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์ ๋ง ๊ฐ์ฌํฉ๋๋ค.
์์ ์ฝ๋์ return /thetestroom/.test(url);
๊ฐ ์์์ ์ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ด๊ฐ ์ด์ ์๋ต์์ URL์ ๋ํด ๋ค๋ฅธ ์ฌ๋์๊ฒ ์ค ์์
๋๋ค. ์ฌ๊ธฐ์์ 'testroom'์ URL์ด ์ด๋ป๊ฒ ๋ณด์ด๋ ๋ณ๊ฒฝํ์ธ์. ๊ฐ๋ ๋ฌธ์ ๋์ ์ฌ๊ธฐ์์ ๋๊ธฐ ์๊ฐ์ ์ป์์ด์ผ ํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
homepage.myButton.click().then(function() {
browser.driver.wait(function() {
return browser.driver.getCurrentUrl().then(function(url) {
return url.includes('......'); // checks if the new url has what you are looking for in ...
}); // this waits until the url changes to whatever it should be in ....
}, 25000, "URL hasn't changed").then(function() {
// after url changed, in new page check these
// pec is protractor expected condition.
// See http://www.protractortest.org/#/api?view=ProtractorExpectedConditions
browser.wait(pec.visibilityOf(homepage.feedTitle), 20000);
expect(homepage.feedTitle.getText()).toContain('.....');
expect(homepage.feedBody.getText()).toContain('.....');
});
@ ์ฌ๋ผ๋ค,
์ ๋ง ๊ณ ๋ง์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๊ตฌํํ๊ฒ ์ต๋๋ค.
๋๋ ๋๋ผ...!
2016๋ 10์ 7์ผ 15์ 52๋ถ์ Saradha [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
๋๋ ๋น์ ์ด return /testroom/.test(url); ์ฝ๋์์
์์. ๊ทธ๊ฒ์ ๋ด๊ฐ ๋ค๋ฅธ ์ฌ๋์๊ฒ URL์ ๋ํด ์ค ์์ ๋๋ค.
์ค๋๋ ์๋ต. ์ฌ๊ธฐ์์ 'testroom'์ URL๋ก ๋ณ๊ฒฝํ์ธ์.
์ฒ๋ผ ๋ณด์ธ๋ค. ์ต๊ทค๋ฌ ๋์ ๋๊ธฐ ์๊ฐ์ ์ป์์ด์ผํ์ต๋๋ค.
๋ฌธ์ .
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.ํํ์ด์ง.myButton.click().then(ํจ์() {
๋ธ๋ผ์ฐ์ .๋๋ผ์ด๋ฒ.๋๊ธฐ(ํจ์() {
๋ฐํ browser.driver.getCurrentUrl().then(function(url) {
๋ฐํ url.includes('......'); // ์ URL์ ์ฐพ๊ณ ์๋ ๋ด์ฉ์ด ์๋์ง ํ์ธํฉ๋๋ค...
}); // ์ด๊ฒ์ URL์ด ๊ทธ๊ฒ์ด ์์ด์ผ ํ๋ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค ....
}, 25000, "URL์ด ๋ณ๊ฒฝ๋์ง ์์์ต๋๋ค.").then(function() {
// URL์ด ๋ณ๊ฒฝ๋ ํ ์ ํ์ด์ง์์ ๋ค์์ ํ์ธํ์ญ์์ค.
// pec์ ๊ฐ๋๊ธฐ ์์ ์กฐ๊ฑด์ ๋๋ค.
// http://www.protractortest.org/#/api ?view=ProtractorExpectedConditions ์ฐธ์กฐ
browser.wait(pec.visibilityOf(homepage.feedTitle), 20000);
๊ธฐ๋(ํํ์ด์ง.feedTitle.getText()).toContain('.....');
๊ธฐ๋(ํํ์ด์ง.feedBody.getText()).toContain('.....');
});โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/angular/protractor/issues/1760#issuecomment -252345767,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AViSFrR5k79AQWfZVEm6J1qTSEPvMjfnks5qxqMXgaJpZM4DYTza
.
@์ฌ๋ผ๋ค ,
ํผ๋๋ฐฑ์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ์กฐ์ธ ๋ถํ๋๋ฆฝ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์คํ ์ค : npm ์คํ ๊ฐ๋ฐ
์ค๋ฅ: './internal/streams/BufferList' ๋ชจ๋์ ์ฐพ์ ์ ์์ต๋๋ค.
๋๋ ๋๋ผ...!
2016๋ 10์ 17์ผ 16:48, narendra Reddy narendra. [email protected] ์ ๋ค์
@ ์ฌ๋ผ๋ค,
์ ๋ง ๊ณ ๋ง์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๊ตฌํํ๊ฒ ์ต๋๋ค.
๋๋ ๋๋ผ...!
2016๋ 10์ 7์ผ 15์ 52๋ถ์ Saradha [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
๋๋ ๋น์ ์ด return /testroom/.test(url); ์ฝ๋์์
์์. ๊ทธ๊ฒ์ ๋ด๊ฐ ๋ค๋ฅธ ์ฌ๋์๊ฒ URL์ ๋ํด ์ค ์์ ๋๋ค.
์ค๋๋ ์๋ต. ์ฌ๊ธฐ์์ 'testroom'์ URL๋ก ๋ณ๊ฒฝํ์ธ์.
์ฒ๋ผ ๋ณด์ธ๋ค. ์ต๊ทค๋ฌ ๋์ ๋๊ธฐ ์๊ฐ์ ์ป์์ด์ผํ์ต๋๋ค.
๋ฌธ์ .
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.ํํ์ด์ง.myButton.click().then(ํจ์() {
๋ธ๋ผ์ฐ์ .๋๋ผ์ด๋ฒ.๋๊ธฐ(ํจ์() {
๋ฐํ browser.driver.getCurrentUrl().then(function(url) {
๋ฐํ url.includes('......'); // ์ URL์ ์ฐพ๊ณ ์๋ ๋ด์ฉ์ด ์๋์ง ํ์ธํฉ๋๋ค...
}); // ์ด๊ฒ์ URL์ด ๊ทธ๊ฒ์ด ์์ด์ผ ํ๋ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค ....
}, 25000, "URL์ด ๋ณ๊ฒฝ๋์ง ์์์ต๋๋ค.").then(function() {
// URL์ด ๋ณ๊ฒฝ๋ ํ ์ ํ์ด์ง์์ ๋ค์์ ํ์ธํ์ญ์์ค.
// pec์ ๊ฐ๋๊ธฐ ์์ ์กฐ๊ฑด์ ๋๋ค.
// http://www.protractortest.org/#/api ?view=ProtractorExpectedConditions ์ฐธ์กฐ
browser.wait(pec.visibilityOf(homepage.feedTitle), 20000);
๊ธฐ๋(ํํ์ด์ง.feedTitle.getText()).toContain('.....');
๊ธฐ๋(ํํ์ด์ง.feedBody.getText()).toContain('.....');
});โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/angular/protractor/issues/1760#issuecomment -252345767,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AViSFrR5k79AQWfZVEm6J1qTSEPvMjfnks5qxqMXgaJpZM4DYTza
.
์ฝ๋๋ฒ ์ด์ค์ ์๋ ๊ฒ. ๊ฐ๋/๊ฐ๋ ์ค๋ฅ์ฒ๋ผ ๋ณด์ด์ง ์์
๋๋ ์๊ณ ์๋ค.
๋ด iPhone์์ ๋ณด๋ธ
2016๋ 10์ 19์ผ ์คํ 7์ 54๋ถ์ narendra [email protected]์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@์ฌ๋ผ๋ค ,
ํผ๋๋ฐฑ์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ์กฐ์ธ ๋ถํ๋๋ฆฝ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์คํ ์ค : npm ์คํ ๊ฐ๋ฐ
์ค๋ฅ: './internal/streams/BufferList' ๋ชจ๋์ ์ฐพ์ ์ ์์ต๋๋ค.
๋๋ ๋๋ผ...!
2016๋ 10์ 17์ผ 16:48, narendra Reddy narendra. [email protected] ์ ๋ค์
@ ์ฌ๋ผ๋ค,
์ ๋ง ๊ณ ๋ง์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๊ตฌํํ๊ฒ ์ต๋๋ค.
๋๋ ๋๋ผ...!
2016๋ 10์ 7์ผ 15์ 52๋ถ์ Saradha [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
๋๋ ๋น์ ์ด return /testroom/.test(url); ์ฝ๋์์
์์. ๊ทธ๊ฒ์ ๋ด๊ฐ ๋ค๋ฅธ ์ฌ๋์๊ฒ URL์ ๋ํด ์ค ์์ ๋๋ค.
์ค๋๋ ์๋ต. ์ฌ๊ธฐ์์ 'testroom'์ URL๋ก ๋ณ๊ฒฝํ์ธ์.
~ ํ ๊ฒ์ด๋ค
์ฒ๋ผ ๋ณด์ธ๋ค. ์ต๊ทค๋ฌ ๋์ ๋๊ธฐ ์๊ฐ์ ์ป์์ด์ผํ์ต๋๋ค.
๋ฌธ์ .
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.ํํ์ด์ง.myButton.click().then(ํจ์() {
๋ธ๋ผ์ฐ์ .๋๋ผ์ด๋ฒ.๋๊ธฐ(ํจ์() {
๋ฐํ browser.driver.getCurrentUrl().then(function(url) {
๋ฐํ url.includes('......'); // ์ URL์ ์ฌ์ฉ์๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.
์์ ์ฐพ๊ณ ์์ต๋๋ค ...
}); // ์ด๊ฒ์ URL์ด ๊ทธ๊ฒ์ด ์์ด์ผ ํ๋ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค ....
}, 25000, "URL์ด ๋ณ๊ฒฝ๋์ง ์์์ต๋๋ค.").then(function() {
// URL์ด ๋ณ๊ฒฝ๋ ํ ์ ํ์ด์ง์์ ๋ค์์ ํ์ธํ์ญ์์ค.
// pec์ ๊ฐ๋๊ธฐ ์์ ์กฐ๊ฑด์ ๋๋ค.
// ๋ณด๋ค
http://www.protractortest.org/#/api ?view=๊ฐ๋๊ธฐ ์์ ์กฐ๊ฑด
browser.wait(pec.visibilityOf(homepage.feedTitle), 20000);
๊ธฐ๋(ํํ์ด์ง.feedTitle.getText()).toContain('.....');
๊ธฐ๋(ํํ์ด์ง.feedBody.getText()).toContain('.....');
});โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
< https://github.com/angular/protractor/issues/1760#issuecomment -252345767
,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
<
https://github.com/notifications/unsubscribe-auth/AViSFrR5k79AQWfZVEm6J1qTSEPvMjfnks5qxqMXgaJpZM4DYTza.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/angular/protractor/issues/1760#issuecomment -254996166,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AKCDZXWuZX7dJ0R2V2sHgxKqwydQV8o3ks5q1tfngaJpZM4DYTza
.
์๋ ํ์ธ์ srajagopalan1712๋,
๊ฐ๋๊ธฐ๊ฐ ์ค๋ฅ ์๋์ ํ์๋๋ ์๋ฅผ ์คํ ์ค์ ๋๋ค. ์กฐ์ธ ๋ถํ๋๋ฆฝ๋๋ค. ๊ฐ์ฌํฉ๋๋ค
goog.global.setTimeout(function() { ์์ธ ๋ฐ์; }, 0);
^^
๊ฐ๋๊ธฐ๊ฐ ํ์ด์ง์ ๋๊ธฐํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ค๋ฅ: "[ng:test] http://errors.angularjs.org/1.4.7/ng/test "
describe('๋ด ์ฑ ํ ์คํธ', function() {
browser.get('http://localhost:port/integrated/myWeb.html').then(function() {
browser.wait(function() {
return browser.getCurrentUrl().then(function(url) {
return 'http://localhost:port/integrated/myWeb.html';
element(by.model('ctrl.formData.emailAddress')).sendKeys('').clear();
element(by.model('ctrl.formData.emailAddress')).sendKeys('[email protected]');
element(by.model('ctrl.formData.emailAddress')).getAttribute('value').then(function (value) {
expect(value).toEqual('[email protected]');
});
});
}, 10000);
});
๋ค๋ค ๊ฐ์ฌ ํด์,
html ํ์ด์ง์ ng-app ํ๊ทธ๋ฅผ ์ถ๊ฐํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
Angular 5 ํ
์คํธ์์ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์๋ง๋ ์ด๊ฒ์ ๋ช
๋ฐฑํ ๊ฒ์ ๋งํ๊ณ ์์ง๋ง ๋๋ฒ๊ทธํ๋ ค๋ฉด e2e ํ
์คํธ๋ฅผ ์คํํ๊ธฐ ์ ์ "ng serve"๋ฅผ ๋ณ๋๋ก ์์ํด์ผ ํ๋ค๋ ๊ฒ์ ๋ชฐ๋์ต๋๋ค. ๋ค์์ ๋ด๊ฐ ๋ต์ ์ฐพ์ ํ ๋ก ์
๋๋ค.
https://github.com/angular/angular-cli/issues/4183
์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!