Webdriverio: MS Edge์—์„œ browser.switchToFrame()์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

์— ๋งŒ๋“  2019๋…„ 04์›” 24์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: webdriverio/webdriverio

ํ™˜๊ฒฝ :

  • WebdriverIO ๋ฒ„์ „: ["webdriverio": "^5.7.15"]
  • ๋ชจ๋“œ: [WDIO ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ/BROWSERSTACK]
  • WDIO Testrunner์ธ ๊ฒฝ์šฐ ๋™๊ธฐํ™”/๋น„๋™๊ธฐ ์‹คํ–‰: [๋™๊ธฐํ™”]
  • Node.js ๋ฒ„์ „: [v8.11.3]
  • NPM ๋ฒ„์ „: [5.6.0]
  • ๋ธŒ๋ผ์šฐ์ € ์ด๋ฆ„ ๋ฐ ๋ฒ„์ „: [MS Edge v16, v17, v18]
  • ํ”Œ๋žซํผ ์ด๋ฆ„ ๋ฐ ๋ฒ„์ „: [macOS Mojave 10.14.4]
  • ์ถ”๊ฐ€ wdio ํŒจํ‚ค์ง€ ์‚ฌ์šฉ(ํ•ด๋‹น๋˜๋Š” ๊ฒฝ์šฐ): ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๊ฐ€ GitHub์—์„œ ํ˜ธ์ŠคํŒ…๋ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€.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.

  • ์˜ต์…˜ 2

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)

๋ชจ๋“  3 ๋Œ“๊ธ€

๋‹ค์Œ ๋‘ ๊ฐ€์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ 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์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌํŒŒ๋ฆฌ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰