Appium WeChat Webviewの自動化技術

目次

序文:

WeChatの設定

ChromeDriver を使用してテスト ケースを作成する

appium を使用してテスト ケースを作成する


序文:

Appium は、自動モバイル アプリケーション テスト用のオープン ソース ツールであり、これを使用すると、実際のデバイスまたはエミュレータ上でモバイル アプリケーションの自動テストを実行できます。WeChat Webview は、アプリケーションで WeChat ログインまたは共有機能を開いたときに表示されるインターフェースなど、モバイル アプリケーションに埋め込まれた WeChat Web インターフェースを指します。

WeChatの設定

WeChat を使用して、WeChat x5 カーネル デバッグ ページである debugx5.qq.com を開きます。この URL を任意のチャット ウィンドウに入力して開くことができます。「TBS カーネル インスペクター デバッグ機能を有効にするかどうか」にチェックを入れます

ChromeDriver を使用してテスト ケースを作成する

まず、公式ダウンロードから ChromeDriver をインストールする
か、appium のインストール パスから chromedriver を見つけます。実際、chromedriver のパスは appium の実行ログにも出力されます。その後、コンピュータ上で ChromeDriver を起動し、ポートを設定し
ます

chromedriver --url-base=wd/hub --port=8000

Selenium または appium クライアントを使用してテスト ケースを作成できます。
以下は私の最もスケーラブルなテスト ケースです。他の言語でも実装できます。

test("test chromedriver weixin") {
  val options = new ChromeOptions()
  options.setExperimentalOption("androidPackage", "com.tencent.mm")
  options.setExperimentalOption("androidUseRunningApp", true)
  options.setExperimentalOption("androidActivity", ".plugin.webview.ui.tools.WebViewUI")
  options.setExperimentalOption("androidProcess", "com.tencent.mm:tools")
  val capability = DesiredCapabilities.chrome()
  capability.setCapability(ChromeOptions.CAPABILITY, options)
  val url = "http://127.0.0.1:8000/wd/hub"
  val driver = new AndroidDriver[WebElement](new URL(url), capability)
  driver.get("https://testerhome.com/topics/6954")
  println(driver.getPageSource)
  driver.quit()
}

appium を使用してテスト ケースを作成する

Android 上の appium が WeChat Webview を自動化できない理由をよく尋ねる人がいますが、実際、それは可能です。主に現在の appium のバグが原因です。appium でコンテキストを切り替えるとき、重要な androidProcess 構成はもたらされません。彼

、 appium が Webview を認識すると、com.tencent.mm:tools の Webview を com.tencent.mm の Webview として認識してしまうため、コンテキストスイッチが失敗します。

appium を使用して WeChat h5 をテストする正しい方法は次のとおりです

test("test weixin h5") {
  val capability = new DesiredCapabilities()
  capability.setCapability("app", "")
  capability.setCapability("appPackage", "com.tencent.mm")
  capability.setCapability("appActivity", ".ui.LauncherUI")
  capability.setCapability("deviceName", "emulator-5554")
  capability.setCapability("fastReset", "false")
  capability.setCapability("fullReset", "false")
  capability.setCapability("noReset", "true")
  //capability.setCapability("unicodeKeyboard", "true")
  //capability.setCapability("resetKeyboard", "true")

  //关键是加上这段
  val options = new ChromeOptions()
  options.setExperimentalOption("androidProcess", "com.tencent.mm:tools")
  capability.setCapability(ChromeOptions.CAPABILITY, options)

  val url = "http://127.0.0.1:4723/wd/hub"
  val driver = new AndroidDriver[WebElement](new URL(url), capability)
  println(driver.getPageSource)
  driver.findElementByXPath("//*[@text='我']").click
  driver.findElementByXPath("//*[@text='收藏']").click
  driver.findElementByXPath("//*[contains(@text, '美团外卖')]").click
  println(driver.getPageSource)
  println(driver.getContextHandles)
  driver.context("WEBVIEW_com.tencent.mm:tools")
  println(driver.getPageSource)
}

一番重要なのはこの一文です

val options = new ChromeOptions()
options.setExperimentalOption("androidProcess", "com.tencent.mm:tools")
capability.setCapability(ChromeOptions.CAPABILITY, options)

  ここに来た者として、皆さんも寄り道は避けていただきたいと思います。

ここでは、自動テストを進める上で必要なことをいくつか共有し、お役に立てれば幸いです。

(ソフトウェアテスト関連資料、自動テスト関連資料、技術的なQ&Aなど)

そうすることでより良い進歩が見込めると信じています!

下の小さなカードをクリックしてください

おすすめ

転載: blog.csdn.net/Free355/article/details/131785568