Jupyterlab_web_win_chrome04_title

【テスト自動化】Python selenium(タブ切り替え、前ページに戻る、進む、リフレッシュ)Chrome操作

皆さん、こんにちは。
今回は、タブ切り替え、前ページに戻る、進む、リフレッシュについてご紹介したいと思います。
今回も前回と引き続き、Chrome Driverを使用して各自動化の操作をご紹介していきたいと思います。

■記事内リンク

事前準備
タブ切り替え
前ページに戻る
進む
リフレッシュ

□事前準備

◇ipynbファイル作成

いつものように、Anacondaを起動後、JupyterLabを選択しましょう。
JupyterLab起動後、画面左上のメニュー「File」⇒「New」⇒「Notebook」を選択します。
Select Kernelで「Python 3」を選択し、作成したipynbファイルのタブを右クリック後、
Rename Fileを選択し、ファイル名を設定します。
今回以下のようにファイル名を設定しました。
Jupyterlab_Web_operation_Chrome04.ipynb
Jupyterlab_web_win_chrome04_01

◇インポート

selenium、webdriver、timeをインポートしましょう。
以下を入力しインポートします。
#インポート
import selenium
from selenium import webdriver
import time
print("準備:inport OK")
time.sleep(3)

◇driver起動

Chrome Driverを起動しましょう。
前回と同様に以下を記述します。
#Chrome Driver設定
driver=webdriver.Chrome(executable_path="C:\\Users\\sinsu\\WebDrivers\\ChromeDriver\\Ver89\\chromedriver.exe")
time.sleep(3)
driver.maximize_window()
time.sleep(3)

print("Chrome Driver OK")
time.sleep(1)

◇テストページへ移動

今回は以下テストページに遷移したいとお思います。

テストページ

#テストページ遷移
driver.get('https://susakiworks.com/testwork/testpage/')
time.sleep(3)

print("テストページに遷移しました。")
time.sleep(1)

該当のテストページへ遷移できればOKです。
Jupyterlab_web_win_chrome04_02

□タブ切り替え

テストページ「TestPage01」リンクをクリックして別タブで開こうと思います。
別タブで開く際は、「Ctrl」キーを押しながらリンクをクリックしたいと思います。
その際、キーを入力する「Key」と、「ActionChain」をインポートします。

◇インポート

別タブでリンクをクリックする際、以下をインポートします。

#インポート
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
time.sleep(1)
print("インポートしました。")
time.sleep(1)

◇別タブでリンクをクリック

「TestPage01」のリンクを別タブでクリックしましょう。
リンクを右クリック⇒検証からリンクテキストを確認または、リンクテキストは、表示されている以下文字列となっていますので、それをコピーします。
https://susakiworks.com/softwareesting/testpage/test_page_no1/

コードは、以下のように記述します。

#別タブで開く
TestPage = driver.find_element_by_link_text("https://susakiworks.com/testwork/testpage/test_page_no1/")
actions = ActionChains(driver)
actions.key_down(Keys.CONTROL)
actions.click(TestPage)
actions.perform()
time.sleep(3)

print("別タブで開きました。")
time.sleep(1)

「key_down」を使用して、「Ctrl」キーを押し、リンクをクリックしています。
コードが問題なく実行できたら、以下のように別タブでリンク先のページが開きました。
Jupyterlab_web_win_chrome04_03

◇タブ切り替え実行

リンクページを別タブで開くことができました。

現状、Driverの操作は、表示しているテストページ「https://susakiworks.com/testwork/testpage/」となっています。
これを別タブで開いたページに切り替える際は、以下コードを記述し実行します。

#新しいタブに表示切り替え
driver.switch_to.window(driver.window_handles[1])
time.sleep(3)

Print("別タブに切り替えました。")
time.sleep(1)

実行すると、タブの表示を切り替えることができました。
Jupyterlab_web_win_chrome04_04

タブを切り替える場合は、「switch_to.window」を使用します。
また、「handles[1]」は、開いているタブの番号を指定しています。
タブは、0、1、2…とカウントされるので、2つ目のタブは「1」となります。

◇開いたタブを閉じる

開いたタブを閉じたいと思います。

以下コードを実行して、タブを閉じます。
#開いたタブを閉じます。
driver.close()
time.sleep(3)

print("開いたタブをCloseします。")
time.sleep(1)

◇元のタブに切り替え

開いたタブは閉じましたが、このまま元のタブで操作を行うと、エラーとなってしまいます。
それは、まだ最初のタブに制御が切り替わっていないためです。
元のタブに制御を切り替える場合は、以下コードを実行します。

#元タブに表示切り替え
driver.switch_to.window(driver.window_handles[0])
time.sleep(3)

print("別タブに切り替えました。")

◇Key_down系の問題点

タブを切り替える際に、Key_downで「Ctrl」キーを押しており、こちらが実は、タブを閉じた場合でも効いている状態となっています。

試しに、以下操作を行い、ページ遷移を行ってみます。
「Home」のリンクを選択し、ホームページに遷移してみます。
Jupyterlab_web_win_chrome04_05

#トップページリンククリック
Top = driver.find_element_by_xpath('//*[@id="breadcrumb"]/ol/li[1]/a/span').click()
time.sleep(3)

print("ホームページに遷移しました。")
time.sleep(1)

すると、別タブで当サイトのホームページが表示されてしまいました。
Jupyterlab_web_win_chrome04_06

こちらについて、「actions.key_up(Keys.CONTROL)」等を試みましたが、解除されませんでした。。。
他のSeleniumを掲載されているページ、動画を参照しましたが、解決策当、見当たりませんでした。。。
こちらは、わかり次第、更新したいと思います。

※次の項目を行いたいので、一度、Driverで開いたページをCloseし、再度テストページを開いています。

#Chrome Driver設定
driver=webdriver.Chrome(executable_path="C:\\Users\\sinsu\\WebDrivers\\ChromeDriver\\Ver89\\chromedriver.exe")
time.sleep(3)
driver.maximize_window()
time.sleep(3)

print("Chrome Driver OK")
time.sleep(1)

#テストページ遷移
driver.get('https://susakiworks.com/testwork/testpage/')
time.sleep(3)

print("テストページに遷移しました。")
time.sleep(1)

□前ページに戻る

◇ページ遷移

再度テストページを開きます。
開いた後は、ページに戻る操作の確認のため、任意のページに遷移したいと思います。

当サイトのホームページに遷移したいと思います。
#トップページリンククリック
Top = driver.find_element_by_xpath('//*[@id="breadcrumb"]/ol/li[1]/a/span').click()
time.sleep(3)

print("ホームページに遷移しました。")
time.sleep(1)

◇戻る

前のページに戻る操作は簡単です。
以下を実行します。

#前ページに戻る
driver.back()

print("テストページに戻りました。")
time.sleep(1)

ホームページからテストページに戻れたらOKです。

□進む

進む操作も簡単です。
以下を行うことで、進む(遷移したページを表示)ことができます。

#ページに進む
driver.forward()

print("テストページに戻りました。")
time.sleep(1)

ホームページに進めたらOKです。
Jupyterlab_web_win_chrome04_07

 

□リフレッシュ

最後に、リフレッシュ操作を行います。
リフレッシュは、以下操作で行うことができます。

#再読み込み
driver.refresh()

print("Homeページを再読み込みしました。")
time.sleep(1)

ページが再読み込みされたらOKです。

 

■最後に

今回は、Chrome driverを使用して、「ダウンロード」、「アップロード」、「データ駆動型テスト」についてご紹介いたしました。
次回もWeb操作について、ご紹介していきたいと思います。

最後まで見て頂き、ありがとうございました。

 

サイトトップへ
https://susakiworks.com/

 

Pythonをおぼえたらブラウザ操作を自動化しよう: Seleniumで操作してBeautifulSoupで解析をする
Pythonをおぼえたらブラウザ操作を自動化しよう: Seleniumで操作してBeautifulSoupで解析をする

シゴトがはかどる Python自動処理の教科書
シゴトがはかどる Python自動処理の教科書

この記事が気に入ったら
いいね ! しよう

Twitter で
Jupyterlab_web_win_chrome04_title
最新情報をチェックしよう!