こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- PC上でスマホ版Webブラウザ画面をエミュレートし、Seleniumで自動操作したい
- PCとiPhoneをUSBで接続し、スマホ画面をリモート操作する方法が知りたい
- モバイルアプリ開発に際して、Seleniumで動作テストを自動化したい
【Python】Seleniumでスマホ画面を操作する方法
本記事では、Seleniumというライブラリを活用し、スマートフォン標準で表示されるWebブラウザ画面を自動操作する方法について解説します。具体的に以下2つの方法を取り上げ、それぞれ解説します。
- スマホ版Webブラウザ画面をエミュレーション(iOS・Android対応)
- iPhoneとPCをUSBケーブルで接続し、スマホ版Webブラウザをリモート操作
【方法①】スマホ版Webブラウザ画面をエミュレーション
エミュレーション(エミュレート)とは、あるソフトウェアやシステムの処理・動作内容を別のソフトウェアよって模倣し、代替として動作させることを指します。この代替となるソフトウェアはエミュレータと呼ばれています。
本記事では、PCにあるChromeブラウザをエミュレータとして用い、スマホ版Webブラウザ画面を操作する方法について解説します。
【方法②】iPhoneとPCをUSBケーブルで接続し、スマホ版Webブラウザをリモート操作
上図のように、PCとスマートフォンをUSBケーブルで接続し、スマホ版ブラウザ画面を直接的に自動操作する方法について解説します。今回スマートフォンにはiPhone、ブラウザにはSafariを採用した例を示します。
【参考】Python環境の準備・Seleniumのインストール
本記事ではPython環境でSeleniumを動作させることが前提です。そのため、以下のコマンドを実行し、Seleniumを事前にインストールしておきましょう。Python環境設定が未済の方はPythonインストール・プログラミング始め方ガイドもご覧下さい。
pip install selenium
【Python実践】Seleniumでスマホブラウザ画面をエミュレート・操作自動化
PCにあるChromeブラウザをエミュレータとして用い、スマホ版Webブラウザ画面を操作する方法について解説します。
Pythonコード全量
次のようなPythonコードを実行すると、スマホ版のWebブラウザ画面をエミュレートし、操作できるようになります。例として、Yahoo Japan!のページを開き、スナップショットを撮影するコードを記載しています。
# ライブラリ読込
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from time import sleep
# ===========================================================
# スマホ設定
# ===========================================================
# モバイルエミュレーション
mobile_emulation = { "deviceName": "iPhone XR" }
# エミュレーション情報設定
options = webdriver.ChromeOptions()
options.add_experimental_option("mobileEmulation", mobile_emulation)
# ===========================================================
# Chromeブラウザ操作
# ===========================================================
# 表示するURL
url = "https://www.yahoo.co.jp/"
# Chromeドライバー起動
browser = webdriver.Chrome(ChromeDriverManager().install(),options=options)
# 指定のURLに画面遷移
browser.get(url)
# 待機時間
sleep(3)
# ===========================================================
# 【参考】スクリーンショットを撮影
# ===========================================================
# スクリーンショット保存先(カレントディレクトリ)
filename = "screenshot.png"
# スクリーンショット撮影
browser.save_screenshot(filename)
【コード個別解説】スマホ設定
スマホ表示画面をエミュレートする場合、模倣するスマホ端末名deviceName
を指定した次のようなコードを記述しています。
# ライブラリ読込
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from time import sleep
# ===========================================================
# スマホ設定
# ===========================================================
# モバイルエミュレーション
mobile_emulation = { "deviceName": "iPhone XR" }
# エミュレーション情報設定
options = webdriver.ChromeOptions()
options.add_experimental_option("mobileEmulation", mobile_emulation)
上記はiPhone XR
をエミュレートした例です。他に指定可能なスマホ端末は以下の方法で確認できます。
指定可能なスマホ端末の確認方法
- Chromeブラウザ上で右クリックし、「検証」を選択
- 端末ツールバーをクリック
- 端末を選択するプルダウンを表示
- ※プルダウンで確認できる端末名がPythonプログラムで指定可能です
【コード個別解説】Chromeブラウザ操作
前述で設定したスマホ画面をもとにChromeブラウザを操作する場合、以下のプログラムを実行します。
Yahoo Japan!のページを開き、スナップショットを撮影するコードを例に記載しています。
# ===========================================================
# Chromeブラウザ操作
# ===========================================================
# 表示するURL
url = "https://www.yahoo.co.jp/"
# Chromeドライバー起動
browser = webdriver.Chrome(ChromeDriverManager().install(),options=options)
# 指定のURLに画面遷移
browser.get(url)
# 待機時間
sleep(3)
# ===========================================================
# 【参考】スクリーンショットを撮影
# ===========================================================
# スクリーンショット保存先(カレントディレクトリ)
filename = "screenshot.png"
# スクリーンショット撮影
browser.save_screenshot(filename)
Seleniumを用いたWebブラウザ操作について詳しく学びたい方はこちらの記事をご覧下さい。
【Python】Seleniumとは?Webブラウザ操作の自動化方法を徹底解説
PythonでWebブラウザの自動操作を実現したい方向けに「Seleniumの概要」「Seleniumの利用手順」について詳しく解説します。
【Python実践】iPhoneをUSB接続しスマホWebブラウザをリモート自動操作
PCとiPhoneをUSBケーブルで接続し、iPhoneのSafariブラウザを直接的に操作する方法を解説します。
【事前準備①】PCとiPhoneをUSBで接続する
はじめに、お手元のPCとiPhoneをUSBケーブルで接続しておきましょう。その際に上図のようなポップアップが表示されるため、「信頼」をクリックします。
【事前準備②】Safariのリモートオートメーション設定をONにする
続いて、PCからのリモート操作を許容するために、iPhoneのSafari設定を編集します。以下の手順に従い、設定を完了しましょう。
①iPhoneの「設定」アプリを開き、Safariをクリックする
②Safari設定画面で「詳細」をクリックする
③リモートオートメーションをONにする
Pythonプログラム実行
PC画面からPythonプログラムを実行し、iPhoneのSafari画面をリモート操作します。
次のようなコードを実行してみましょう。リモート操作ではSafariでYahoo Japan!を開き、スクリーンショットを撮影するコードを例に記述しています。
from selenium import webdriver
from selenium.webdriver.safari.options import Options as SafariOptions
from time import sleep
# ================================================================
# モバイル設定
# ================================================================
# iPhone(iOS)設定
desired_caps = {}
desired_caps["platformName"] = "iOS"
desired_caps["browserName"] = "safari"
# Safari起動
options = SafariOptions()
# ================================================================
# ブラウザ起動
# ================================================================
# 表示するURL
url = "https://www.yahoo.co.jp/"
browser = webdriver.Safari(options=options, desired_capabilities=desired_caps)
browser.get(url)
# ===========================================================
# 【参考】スクリーンショットを撮影
# ===========================================================
# スクリーンショット保存先(カレントディレクトリ)
filename = "screenshot.png"
# スクリーンショット撮影
browser.save_screenshot(filename)
【参考】Python×Selenium関連記事
当サイトでは、Seleniumに関する記事を多数配信しております。
【参考】Pythonで面倒な作業を自動化!手法一挙公開中!
当サイトでは日々面倒な作業をPythonで自動化する方法を多数配信しております。日々の作業が飛躍的効率化できること間違いなしですので、以下気になった記事があれば併せてご覧ください。
【面倒なタスクをPythonで解決!】作業効率化の人気記事一覧
【参考】Pythonとは?・実現できること
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら