事の発端
業務でウェブアプリの自動テストの需要が高まってきたので、Appiumの環境構築をして動作確認をしていた時の話です。
なんとかPC版Chromeで動作するようになったので、じゃあAndroid実機でも!と思い実行。
これじゃテスト動かんやん!なんでや!!
でも新品の端末買ってきた、みたいな新鮮さだけはある。
【環境】
- Mac OS 12.2.1
- Android 12(実機Pixel 3a)
- Appium 1.22.2(CUI)
- Python3.6
解決法
capabilitiesにappPackage
とappActivity
ではなく、browserName
を使用する。
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4723/wd/hub',
desired_capabilities={
'platformName': 'Android',
'platformVersion': '12',
'deviceName': 'Pixel 3a',
'browserName': 'Chrome', # 必須
# 'appPackage': 'com.android.chrome', # NG
# 'appActivity': 'com.google.android.apps.chrome.Main', # NG
'chromeOptions': {
'w3c': False,
},
})
原因
GitHubのIssueが参考になりました。
When browser name is not strictly equals one from CHROME_BROWSERS array Appium 1.5+ is using ADB instead of Chromedriver and this is why we get such strange screenshots. Appium 1.4 contrarily was matching Chrome by app package name and this is why it worker with any browser name capability. So to solve this issue you just need to change browser name to one from the list above.
Appium 1.4まではパッケージ名を指定してましたが、1.5以降はブラウザ名を指定するようになっていると。パッケージ名が指定されているとchromedriverでなくADB経由でchromeを起動するので、welcomeページが表示される…みたいです(解釈合ってます?)。
調べたら'chromeOptions': {'args': ['--disable-fre']}
をつけるとか、色々見つかったんですが、私の場合効果はなかったです。
ネイティブアプリでの構築記事を参考にしたのがまずかったか。。appActivityの設定が悪いのかと思い、随分遠回りしましたが、なんとかなりました。ようこそページの操作も自動化する…なんて力技をしなくてよかったです。