目次
ChromeDriver を使用してテスト ケースを作成する
序文:
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など)
そうすることでより良い進歩が見込めると信じています!
下の小さなカードをクリックしてください