Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python】キーの同時押し、連続操作などの実施方法


PythonSeleniumでもキー操作、データ入力などを行っている時に、何かしらのキーを押しながらのクリックなどキーの同時押しや連続操作などを行いたいというようなことがあると思います。

 

そのような時に使えそうな機能の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】Python仮想環境を別PCに移設する方法 - Django Girls and Boys 備忘録

 

【Python】Pythonで仮想環境を構築する手順 - Django Girls and Boys 備忘録

 

【Python 仮想環境構築】OneDriveに仮想環境を構築する方法 - Django Girls and Boys 備忘録

 

【Python PyTorch】WindowsでGPU(CUDA)を認識しない時に 「AssertionError: Torch not compiled with CUDA enabled 」というエラーが発生した時の対応方法 - Django Girls and Boys 備忘録

 

【Python】subprocess.Popen()を使ったプロセスの並列起動について - Django Girls and Boys 備忘録

 

【Python】exeファイルを実行する方法:subprocess.run()を使った簡単な手順 - Django Girls and Boys 備忘録

 

【Visual Studio Code】ターミナル画面で 「インポート ***** を解決できませんでした」というエラーが表示される場合の対応方法 - Django Girls and Boys 備忘録

 

プログラミング初心者に最適な一冊:『いちばんやさしいGit&GitHubの教本 第2版』 - Django Girls and Boys 備忘録

 

【Python】フォルダ内にあるファイル名を抽出する方法 - Django Girls and Boys 備忘録

 

【Python】キーの同時押し、連続操作などの実施方法 - Django Girls and Boys 備忘録

 

【Python】PythonでPdfWriterを使ってPDFファイルを分割する方法 - Django Girls and Boys 備忘録