PythonのSeleniumでもキー操作、データ入力などを行っている時に、何かしらのキーを押しながらのクリックなどキーの同時押しや連続操作などを行いたいというようなことがあると思います。
そのような時に使えそうな機能の1つにActionChainsがあります。
目次
1.ActionChainsの使用例と説明
ActionChainsクラスの引数にdriverを渡してインスタンスを生成し、そのインスタンスに対してクリックやキーボード押下などの操作を追加していきます。最後にperformを実行することでそれまで追加してためていたメソッドを実行します。
具体的には、たとえば以下のようです。
from selenium.webdriver.chrome import service as fs import os from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains path_driver = os.getcwd()+'\chromedriver.exe' # ドライバー指定でChromeブラウザを開く chrome_service = fs.Service(executable_path=path_driver) driver = webdriver.Chrome(service=chrome_service) #指定したURLに遷移する driver.get("https://www.google.co.jp") #リンクテキスト名が"Gmail"のリンク要素を取得 element = driver.find_element(By.PARTIAL_LINK_TEXT, "Gmail") #Controlキーを押下しながら"Gmail"のリンクをクリック actions = ActionChains(driver) actions.key_down(Keys.CONTROL) actions.click(element) actions.perform()
1~5行目までで必要なもののインポートを行っています。
5~8行目まででChromeのドライバ指定をやっています。
9行目以降でGoogleを開いてGmailのリンクをクリックしています。
これは、なかなかいい例がなかったので以下の逆引きサイトを参考にさせてもらっています。
SeleniumAPI逆引き
https://www.seleniumqref.com/api/python/actions/Python_key_down_click.html
2.ActionChainsの別の使用例と内容
また、別の例としては以下のようなものもあります。
内容は、
「selectタグとして「abcdef」というタグがあるものとします。
importとdriver設定の後で、あらかじめその要素をクリックし、プルダウンとして表示された選択要素の中で、下矢印キーを押しながら3つ下を選択する」
ような例になりますが、以下のようなものになります。
from selenium import webdriver from selenium.webdriver.chrome import service as fs import os from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains : : : path_driver = os.getcwd()+'\chromedriver.exe' # ドライバー指定でChromeブラウザを開く chrome_service = fs.Service(executable_path=path_driver) driver = webdriver.Chrome(service=chrome_service)
element = driver.find_element(By.NAME,"abcdef") element.click() actions = ActionChains(driver) actions.key_down(Keys.DOWN) actions.key_down(Keys.DOWN) actions.key_down(Keys.DOWN) actions.key_down(Keys.ENTER) actions.perform()
これらにより、複数キーの同時押しや連続操作などが可能になるのではないかと思います。
関連記事:
【Python】キーボード、キー入力判定方法 - Django Girls and Boys 備忘録
【Python】keyboardライブラリでのキー入力検出に使用可能なキーの種類 - Django Girls and Boys 備忘録
【Python Selenium】各ブラウザ用のドライバーを自動アップデートする方法 - Django Girls and Boys 備忘録
【Python Selenium】Pythonで行うproxy環境設定方法 - Django Girls and Boys 備忘録
【PythonからWeb操作】seleniumのインストール手順 - Django Girls and Boys 備忘録
【PythonによるExcelファイルの読み書き】PythonのダウンロードからExcelファイルの読み書きまでの一通りすべての方法 - Django Girls and Boys 備忘録
【Python Selenium】ActionChainsによるキーの同時押し、連続操作などの使用方法 - Django Girls and Boys 備忘録
【Python】「文字列として受け取ったリスト」をリストに復元した時の対処方法、変換方法 - Django Girls and Boys 備忘録
【Python】ソースコードにコメントをつける方法(コメント化) - Django Girls and Boys 備忘録
【PythonでのExcelファイル読み書き方法】ファイルオープンしているファイル(アクティブファイル)への書込方法 - Django Girls and Boys 備忘録
【Python Selenium】Webサイトのスクレイピングなどで必要なフレーム間移動方法 - Django Girls and Boys 備忘録
【Python Selenium】ブラウザ用ドライバーのダウンロードとインストール方法 - Django Girls and Boys 備忘録
【PythonからWeb操作】selenium、各ブラウザ用ドライバーの最新バージョン確認、ダウンロード場所 - Django Girls and Boys 備忘録
【Python Selenium】新規ウインドウ追加時のウインドウ切替方法 - Django Girls and Boys 備忘録
【Python Selenium】ウインドウ表示時などでのWaitの方法、待機方法 - Django Girls and Boys 備忘録
【Python Selenium】新規ウインドウ(新規タブ)追加時のウインドウ切替方法(追加ハンドルをハンドル差異比較にて取得) - Django Girls and Boys 備忘録
【python】実行時に表示されるコンソールウインドウを非表示にする方法 - Django Girls and Boys 備忘録
【Python Selenium】Webサイトのソースコードをファイル保存する方法 - Django Girls and Boys 備忘録
【Python】キー入力によるプログラム終了処理、ループを抜けて次の処理へ移行する処理 - Django Girls and Boys 備忘録
【Python Excel】ExcelからのPython実行ファイル(アプリケーションファイル)起動方法 - Django Girls and Boys 備忘録
【Python】ログイン中のユーザ名を取得する方法 - Django Girls and Boys 備忘録
【Python Selenium】クローリング、スクレイピングにて対象ウインドウのソースコードを調べる方法 - Django Girls and Boys 備忘録
【Python Selenium】ウインドウのURLを指定して画面展開する方法と現在表示されているウインドウのURLとタイトルを取得する方法 - Django Girls and Boys 備忘録
【Python Selenium】ウインドウハンドル取得方法 - Django Girls and Boys 備忘録
【Python Selenium】ウインドウ内の要素取得、キーボード入力などする方法(name属性、id属性、class属性) - Django Girls and Boys 備忘録
【Python Selenium 要素取得】ウインドウハンドル取得方法(Chrome用) - Django Girls and Boys 備忘録
【Python Selenium】ウインドウ内の要素取得、キーボード入力などする方法(name属性、id属性、class属性)(Chrome用) - Django Girls and Boys 備忘録
【Python Selenium】f文字列(フォーマット文字列)、r文字列(raw文字列)について - Django Girls and Boys 備忘録
【Python】エスケープシーケンス(エスケープ文字)について - Django Girls and Boys 備忘録