# ハイブリッドアプリケーションのテスト

# はじめに

モバイルアプリケーションの中には、ネイティブおよびウェブビューの双方のテストすべきコンポーネントを持つものがあります。
Appiumは、UIAutomatorおよびXCUITestラッパーを使ってこれらのコンポーネントにアクセスできますが、非常に低速です。
幸い、我々はウェブビューコンテキストに変換し、通常のウェブロケーターを使って要素にアクセスすることができます。

# アプリケーションの設定

# Android

ウェブビュー内部のコンポーネントにアクセスするには、アプリケーションのウェブビュー要素のsetWebContentsDebuggingEnabledフラグをtrueにする必要があります。

# Chromedriver

Appiumに適切なバージョンのChromedriverを使うよう通知する必要があります。 詳細については、こちらをクリックしてください。

# テストの実行

こちらが、ウェブビューを含むアクティビティに遷移し、ウェブビュー内のリンクをクリックするためのサンプルテストです。

  • getAllContextsは利用可能なコンテキストの文字列配列を返します。
    ウェブビューのフルネームは変わりますが、一般的に、配列は、['NATIVE_APP', 'WEBVIEW1']のようになっています。
    ['NATIVE_APP']しかない場合は、ウェブビューの自動テストに必要な適切な設定がアプリケーションで行われていることと、ウェブビュー要素が読み込みされていることをアプリケーションで確認してください。

  • switchToContextは、ネイティブビューコンテキストからウェブビューコンテキスト、またその反対にスイッチするための方法です。

  • getContextは現在のコンテキストを返します。

import { TestCase, TestModule, gondola } from "@logigear/gondola";
TestModule("Hybrid Test");
TestCase("Test Webview", async () => {
    await gondola.tap({android: "//android.widget.TextView[@text='Webview']", ios: "~Webview"});
    await gondola.wait(5);
    let $contextWebview = await gondola.getAllContexts();
    await gondola.switchToContext($contextWebview[1]);
    await gondola.click({xpath: "//a[.='https://facebook.github.io/react-native/']"});
    await gondola.switchToContext($contextWebview[0]);
});

  • 上記テストにおいて、ウェブビューを持つアクティビティに遷移します
  • そして、ロードを待ちます
  • ロードされたら、利用可能なコンテキストを確認します
  • ウェブビューコンテキストにスイッチします
  • ウェブビュー内のリンクをクリックします
  • 最後に、ネイティブアプリケーションコンテキストに戻ります

TIP

Appiumデスクトップは、上記リンクにて、ロケーターを//XCUIElementTypeStaticText[@name="https://facebook.github.io/react-native/"]のような形式で表示しますが、ウェブビューコンテキストにスイッチしている場合は動作しません。ウェブビュー内を操作する場合にはウェブロケーターを使用する必要があります。

気づいていますか?

tapキーワードを使用する際に、AndroidおよびiOSのロケーターを含めています。Gondolaはテスト対象のプラットフォームを検出し、適切なロケーターを選択します。

最終更新: 2020/12/28 4:12:58