рд╡рд╛рддрд╛рд╡рд░рдг :
рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди
"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
}
}
рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
рдХрдорд╛рдВрдб browser.switchToFrame() рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдПрдЬ рд╡рд░реНрдЬрди 16,17 рдФрд░ 18 рдкрд░ iFrames рдкрд░ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрд░реЛрдо, рдлрд╛рдпрд░рдлреЙрдХреНрд╕, рд╕рдлрд╛рд░реА рдФрд░ IE11 рдкрд░ рд╕рдорд╛рди рдХрдорд╛рдВрдб рдФрд░ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ (рдЕрдиреБрднрд╛рдЧ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ) рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рдЬрдирди рдХрд░рдирд╛
npm run test:local
рдХреГрдкрдпрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдбреНрд░рд╛рдЗрд╡рд░ рдЪрд╛рд▓реВ рд╣реИ
npm run test:remote
рдХреГрдкрдпрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ wdio.remote.conf.js рдореЗрдВ рдЕрдкрдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░рд╕реНрдЯреИрдХ user
рдФрд░ key
рдбрд╛рд▓рд╛ рд╣реИ
рдПрдХ рдмрд╛рд░ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, 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)
рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рдХрд▓реНрдк 1 рдкрд░ рд╡рд░реНрдгрд┐рдд рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реИ
рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░
рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ iFrame рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдФрд░ MS Edge рдкрд░ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
рд▓реЙрдЧ
рдХрдВрд╕реЛрд▓ рд▓реЙрдЧ рдФрд░ wdio рд▓реЙрдЧ рдпрд╣рд╛рдБ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рд╣реИрдВ gist
рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрджрд░реНрдн
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдпрд╣ рдкреНрд░рд╢реНрди Gitter рдЪреИрдирд▓ рдореЗрдВ рдкреВрдЫрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЖрдЬ @christian-bromann рдХреЗ рд╕рд╛рде рдЪрд░реНрдЪрд╛ рдХреА, рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рдПрдХ рдореБрджреНрджрд╛ рдмрдирд╛рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреАред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ 3774 рдЗрд╕
рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИ:
рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд░рд╕реНрдЯреИрдХ рдХреЗ рддрд╣рдд рдХреНрд░реЛрдо, рдлрд╛рдпрд░рдлреЙрдХреНрд╕, рдПрдордПрд╕ рдПрдЬ, рдЖрдИрдИ11 рдФрд░ рд╕рдлрд╛рд░реА рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛
let iFrame = $('//*[@name="iFrameSelector"]');
if (browser.capabilities.browserName === "MicrosoftEdge") iFrame = "iFrameSelector";
browser.switchToFrame(iFrame)
@ рдХреНрд░рд┐рд╢реНрдЪрд┐рдпрди-рдмреНрд░реЛрдорди рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред
рд╢реБрдХреНрд░рд┐рдпрд╛
рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЙрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред рдореИрдВрдиреЗ рд╕реАрдзреЗ рд╕реНрд╡рд┐рдЪрдЯреЙрдлреНрд░реЗрдо рдкрд░ рдХреНрд▓рд╛рд╕ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдЕрднреА рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ The specified frame was not found in the current frame or window.
ред рдЖрдкрдХреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдореБрдЭреЗ рдХреНрд▓рд╛рд╕рдирд╛рдо рдпрд╛ рдЖрдИрдбреА рд╕реАрдзреЗ browser.switchToFrame(id or classname)
рдореЗрдВ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рд╡реЛ рд╕рд╣реА рд╣реИ?
рдЕрджреНрдпрддрди: рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХреНрд░реЛрдо, рдпрд╛рдиреА рдФрд░ рдХрд┐рдирд╛рд░реЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рдлрд╛рд░реА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИ:
рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд░рд╕реНрдЯреИрдХ рдХреЗ рддрд╣рдд рдХреНрд░реЛрдо, рдлрд╛рдпрд░рдлреЙрдХреНрд╕, рдПрдордПрд╕ рдПрдЬ, рдЖрдИрдИ11 рдФрд░ рд╕рдлрд╛рд░реА рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛
let iFrame = $('//*[@name="iFrameSelector"]');
if (browser.capabilities.browserName === "MicrosoftEdge") iFrame = "iFrameSelector";
browser.switchToFrame(iFrame)