Webdriverio: MS Edgeでbrowser.switchToFrame()を使用できません

作成日 2019年04月24日  ·  3コメント  ·  ソース: webdriverio/webdriverio

環境 :

  • WebdriverIOバージョン: ["webdriverio": "^ 5.7.15"]
  • モード: [WDIO Testrunner / BROWSERSTACK]
  • WDIO Testrunnerの場合、sync / asyncを実行します: [sync]
  • Node.jsバージョン: [v8.11.3]
  • NPMバージョン: [5.6.0]
  • ブラウザの名前とバージョン: [MS Edge v16、v17、v18]
  • プラットフォーム名とバージョン: [macOS Mojave 10.14.4]
  • 使用される追加のwdioパッケージ(該当する場合):同じ問題のサンプルプロジェクトがGitHubでホストされ

package.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
    }
}

バグを説明する
コマンドbrowser.switchToFrame()は、Microsoft Edgeバージョン16、17、および18ではiFrameに切り替わりません。同じコマンドとコードスニペット(「再現するには」セクションを参照)は、Chrome、FireFox、Safari、およびIE11で機能します。

再現するには

  • オプション1(推奨)
    私は両方を設定しました:

    • コマンドのリポジトリの例(セットアップ/使用が簡単): https

    • iFrameを使用した静的ページ: https ://goofy-pasteur-93f74a.netlify.com/

npm run test:localブラウザドライバが起動していることを確認してください
npm run test:remote BrowserStack userkeyが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に切り替えて、MSEdgeでその中の要素を取得して見つけることができる機能です。

ログ

コンソールログと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)直接指定する必要があります。 あれは正しいですか?

更新:このソリューションは、クロム、つまりエッジで機能します。 サファリでは動作しません

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

briancullinan picture briancullinan  ·  4コメント

pfluegs picture pfluegs  ·  4コメント

KOPTE3 picture KOPTE3  ·  3コメント

davidsoderberg picture davidsoderberg  ·  4コメント

sarahdayan picture sarahdayan  ·  4コメント