ํ๊ฒฝ :
ํจํค์ง.json
"dependencies": {
"browserstack-local": "^1.3.7",
"config": "^1.28.1",
"uuid": "^3.1.0",
"webdriverio": "^5.7.15"
},
"devDependencies": {
"config": "^1.28.1",
"@wdio/cli": "^5.7.15",
"@wdio/local-runner": "^5.7.15",
"@wdio/mocha-framework": "^5.7.14",
"@wdio/sync": "^5.7.13"
}
WebdriverIO ๊ตฌ์ฑ
exports.config = {
user: process.env.BROWSERSTACK_USERNAME || 'XXX',
key: process.env.BROWSERSTACK_ACCESS_KEY || 'YYY',
specs: [
'./test/specs/**/*.js'
],
// Patterns to exclude.
exclude: [
// 'path/to/excluded/files'
],
maxInstances: 10,
capabilities: [
// Chrome and all other browsers work fine
// {
// browser: 'Chrome',
// resolution: '1280x1024',
// os: 'Windows',
// os_version: '10',
// name: 'Chrome',
// project: 'TT UI',
// 'browserstack.networkLogs': true
// },
{
browserName: 'Edge',
browser_version: '18.0',
resolution: '2048x1536',
os: 'Windows',
os_version: '10',
name: 'Microsoft EDGE',
project: 'TT UI',
'browserstack.networkLogs': true
}
],
// Level of logging verbosity: trace | debug | info | warn | error | silent
logLevel: 'debug',
waitforTimeout: 10000,
connectionRetryTimeout: 90000,
connectionRetryCount: 3,
framework: 'mocha',
mochaOpts: {
ui: 'bdd',
timeout: 60000
}
}
๋ฒ๊ทธ ์ค๋ช
๋ธ๋ผ์ฐ์ .switchToFrame() ๋ช
๋ น์ Microsoft Edge ๋ฒ์ 16,17 ๋ฐ 18์์ iFrame์ผ๋ก ์ ํ๋์ง ์์ต๋๋ค. ๋์ผํ ๋ช
๋ น ๋ฐ ์ฝ๋ ์ค๋ํซ(์ฌํํ๋ ค๋ฉด ์น์
์ฐธ์กฐ)์ Chrome, FireFox, Safari ๋ฐ IE11์์ ์๋ํฉ๋๋ค.
์ฌํํ๊ธฐ ์ํด
npm run test:local
๋ธ๋ผ์ฐ์ ๋๋ผ์ด๋ฒ๊ฐ ์์๋์๋์ง ํ์ธํ์ญ์์ค
npm run test:remote
BrowserStack user
๋ฐ key
๋ฅผ wdio.remote.conf.js์ ์ฝ์
ํ๋์ง ํ์ธํ์ญ์์ค.
๊ฐ๋จํ ํ
์คํธ๊ฐ ์คํ๋๋ฉด browser.switchToFrame(parentFrame)
์์ ๋ค์ ๋ฉ์์ง์ ํจ๊ป ์ค๋ฅ๊ฐ ์์๋ฉ๋๋ค. ERROR webdriver: Request failed due to no such frame: The specified frame was not found in the current frame or window.
Ms Edge - BrowserStack ์ ํธ, ํ์ง๋ง ์๋ฌด๋ฐ ์ฐจ์ด๊ฐ ์์ด์ผ ํจ - browser.switchToFrame(element)
๋๋ browser.switchToFrame(element.elementId)
๋ช
๋ น์ ์คํํ๋ฉด option1์ ์ค๋ช
๋ ๊ฒ๊ณผ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์์๋๋ ํ๋
์์๋๋ ๋์์ iFrame์ผ๋ก ์ ํํ๊ณ MS Edge์์ iFrame ๋ด๋ถ์ ์์๋ฅผ ๊ฒ์ํ๊ณ ์ฐพ์ ์ ์๋ ๊ธฐ๋ฅ์
๋๋ค.
ํต๋๋ฌด
์ฝ์ ๊ธฐ๋กํ๊ณ wdio ๋ก๊ทธ๋ ์ฌ๊ธฐ์ ๊ณต์ ์์
์ถ๊ฐ ์ปจํ
์คํธ
์ฒ์์ ์ด ์ง๋ฌธ์ Gitter ์ฑ๋์์ ์์ฒญ๋์์ผ๋ฉฐ ์ค๋ @christian-bromann๊ณผ ๋
ผ์๋์์ผ๋ฉฐ ์ฌ๊ธฐ์ ๋ ์์ธํ ๋ด์ฉ์ด ํฌํจ๋ ๋ฌธ์ ๋ฅผ ๋ง๋ค ๊ฒ์ ๊ถ์ฅํ์ต๋๋ค.
์ด ๋ฌธ์ 3774 ๋ ํ์ธํ์ง๋ง GitHub์์ ๊ณต์ ํ ์ฝ๋(์ ์น์
์ฐธ์กฐ)๊ฐ Edge๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์๋ฒฝํ๊ฒ ์๋ํ๊ธฐ ๋๋ฌธ์ ๊ด๋ จ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค์ ๋ ๊ฐ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
์ด๊ฒ์ BrowserStack ์๋์ Chrome, FireFox, Ms Edge, IE11 ๋ฐ Safari์์ ๋ชจ๋ ์๋ํฉ๋๋ค.
let iFrame = $('//*[@name="iFrameSelector"]');
if (browser.capabilities.browserName === "MicrosoftEdge") iFrame = "iFrameSelector";
browser.switchToFrame(iFrame)
@christian-bromann ์๋ํ๊ณ ํ
์คํธ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ผ๋ฏ๋ก ๋ฌธ์ ๋ฅผ ์ข
๋ฃํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค
๋๋ ๊ทธ๋ฅผ ์ํด์ด ์๋ฃจ์
์ ์๋์ํฌ ์ ์์ต๋๋ค. switchToFrame์์ ์ง์ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํ๋ ค๊ณ ์๋ํ์ง๋ง ์ฌ์ ํ ๋์ผํ ๋ฌธ์ ๊ฐ The specified frame was not found in the current frame or window.
๋ฉ๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ ค๋ฉด ํด๋์ค ์ด๋ฆ์ด๋ ID๋ฅผ browser.switchToFrame(id or classname)
์ง์ ์ง์ ํด์ผ ํฉ๋๋ค. ๊ทธ ๋ง์ต๋๊น?
์ ๋ฐ์ดํธ: ์ด ์๋ฃจ์ ์ chrome ๋ฐ edge์์ ์๋ํฉ๋๋ค. ์ฌํ๋ฆฌ์์๋ ์๋ํ์ง ์์ต๋๋ค
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ค์ ๋ ๊ฐ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
์ด๊ฒ์ BrowserStack ์๋์ Chrome, FireFox, Ms Edge, IE11 ๋ฐ Safari์์ ๋ชจ๋ ์๋ํฉ๋๋ค.
let iFrame = $('//*[@name="iFrameSelector"]');
if (browser.capabilities.browserName === "MicrosoftEdge") iFrame = "iFrameSelector";
browser.switchToFrame(iFrame)