LoginSignup
12
25

More than 1 year has passed since last update.

Seleniumのチートシート

Last updated at Posted at 2022-02-14

Seleniumのチートシートをまとめてみた。

ライブラリのインポート、ドライバ・ブラウザの開始
#1.ライブラリのインポート
from selenium import webdriver

#2.ウェブドライバを開始する
# Chromeの場合
chromedriver = "C:/tests/chromedriver.exe"
driver = webdriver.Chrome(executable_path = chromedriver)
# Firefoxの場合
geckodriver = "C:/tests/geckodriver.exe"
driver = webdriver.Firefox(executable_path = geckodriver)
# Internet Explorerの場合
iedriver = "C:/tests/IEDriverServer.exe"
driver = webdriver.Firefox(executable_path = iedriver)
# Safariの場合(Safariの場合、ドライバがブラウザに組み込まれている)
driver = webdriver.Safari()

#3.ウェブサイトを開く
the_url = "https://example.com"
driver.get(the_url)
ウェブサイトの要素取得
#4.要素(element)を検索する
# 例、下記要素を探す場合
<a href="/sign-up" id="register" name="register" class="cta nav-link">Sign Up</a>path)
# ID要素を探す
the_id = 'register'
element = driver.find_element_by_id(the_id)
# 名前で要素を探す
the_name = 'register'
element = driver.find_element_by_id(the_name)
# クラス名で要素を探す
the_class_name = 'nav-link'
element = driver.find_element_by_class_name(the_class_name)
# Tag名で要素を探す
the_tag_name = 'a'
element = driver.find_element_by_tag_name(the_tag_name)
# Linkテキストで要素を探す
Works only for anchor elements.
the_link_text = 'Sign Up'
element = driver.find_element_by_link_text(the_link_text)
# Partial Link Textで要素を探す
Works only for anchor elements.
the_partial_link_text = 'Sign'
element = driver.find_element_by_partial_link_text(the_partial_link_text)
要素への処理
#5.要素をクリックする(例 登録ボタン)
the_id = 'register'
element = driver.find_element_by_id(the_id)
element.click()

#6.要素の中に書き込む(例 メールアドレスの入力)
the_id = 'email'
the_email = 'maruchin@maru.co.jp'
element = driver.find_element_by_id(the_id)
element.send_keys(the_email)

#7.選択する(例 プルダウン選択)
# 下記のように国選択がある
<select id="country">
<option value="US">United States</option>
<option value="CA">Canada</option>
<option value="MX">Mexico</option>
</select>
# 名前=Canadaを選択する
the_id = 'country'
element = driver.find_element_by_id(the_id)
select_element = Select(element)
select_element.select_by_visible_text('Canada')
# ID要素=CAから選択する
the_id = 'country'
element = driver.find_element_by_id(the_id)
select_element = Select(element)
select_element.select_by_value('CA')
# indexから選択する
the_id = 'country'
element = driver.find_element_by_id(the_id)
select_element = Select(element)
select_element.select_by_index(1)
スクリーンショット、アップロード、JavaScript
#8.スクリーンショットを撮る
the_path = 'C:/tests/screenshots/1.png'
driver.save_screenshot(the_path)

#9.ファイルをアップロードする
<input type="file" multiple="" id="upload_button">
the_file_path = 'C:/tests/files/example.pdf'
the_id = 'upload_button'
element = driver.find_element_by_id(the_id)
element.send_keys(the_file_path)
# まずfile要素を探すことが必要

#10.JavaScriptを実行する
js_code = 'document.getElementById("pop-up").remove()'
driver = execute_script(js_code)
インラインフレームの操作
11. iframe(インラインフレーム)に切り替える
<iframe id="payment_section">
   <input id="card_number">
   <input id="card_name">
   <input id="expiration_date">
   <input id="cvv">
</iframe>
# 上記のようなiframeに切り替える
the_iframe_id = 'payment_section'
the_element_id = 'card_number'
the_iframe = driver.find_element_by_id(the_iframe_id)
driver.switch_to.frame(the_iframe)
element = driver.find_element_by_id(the_element_id)
element.send_keys('41111111111111')
driver.switch_to.default_content()
タブの操作
#12.次のタブに切り替える
# タブを1つだけ開いてるとき、handle=0である
global nextTab
global currentTab
nextTab = currentTab + 1
driver.switch_to_window(driver.window_handles[nextTab])
currentTab = currentTab + 1
#13. 前のタブに切り替える
global previousTab
global currentTab
previousTab = currentTab - 1
driver.switch_to_window(driver.window_handles[previousTab])
currentTab = currentTab - 1
#14. タブを閉じる
driver.close()
各種操作①(カーソル等)
15. アラートを閉じる
driver.switch_to.alert.accept()

16. 更新する
driver.refresh()

17. Hover
the_id = "register"
the_element = driver.find_element_by_id(the_id)
hover = ActionChains(driver).move_to_element(the_element)
hover.perform()

18. 右クリック
the_id = "register"
the_element = driver.find_element_by_id(the_id)
right_click = ActionChains(driver).context_click(the_element)
right_click.perform()

各種操作②(カーソル等)
#19.オフセットしてクリックする
# オフセットは画面左上を座標(0, 0)としてピクセル表示される
the_id = "register"
the_element = driver.find_element_by_id(the_id)
x = 30
y = 20
offset = ActionChains(driver).move_to_element_with_offset(the_element,x,y)
offset.click()
offset.perform()

#20.キーを押す
the_id = 'register'
element = driver.find_element_by_id(the_id)
element.send_keys(Keys.RETURN)

#21.ドラッグ&ドロップ
element_to_drag_id = 'ball'
target_element_id = 'goal'
element_to_drag = driver.find_element_by_id(element_to_drag_id)
target_element = driver.find_element_by_id(target_element_id)
ActionChains(driver).drag_and_drop(element_to_drag_id, target_element).perform()
ソース、クッキーの操作
22. ページソースを取得する
the_page_source = driver.page_source

23. クッキーを取得する
cookies_list = driver.get_cookies()

24. クッキーを削除する
cookie_item = 'shopping_cart'
# ひとつのクッキーを削除する
driver.delete_cookie(cookie_item)
# すべてのクッキーを削除する
driver.delete_all_cookies()
リスト取得、タイムアウト
#25.リストから最初の要素を取得する
the_id = 'register'
list_of_elements = driver.find_elements_by_id(the_id)
first_element = list_of_elements[0]

#26.ページ読み込みのタイムアウトを設定する
driver.set_page_load_timeout(20)

#27.要素のロードタイムアウトを設定する
from selenium.webdriver.support.ui import WebDriverWait
the_id = 'register'
WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID, the_id)))
サイズ、ユーザーエージェント
#28.ウィンドウサイズを設定する
driver.set_window_size(1600, 1200)

#29.ユーザーエージェント文字列の変更
the_user_agent = 'hello'
chromedriver = 'C:/tests/chromedriver.exe'
options = webdriver.ChromeOptions()
options.add_argument('--user-agent = '+ the_user_agent)
driver = webdriver.Chrome(
   executable_path = chromedriver, 
   chrome_options = options)
外部操作
30. ウェブカメラとマイクを使う
chromedriver = 'C:/tests/chromedriver.exe'
options = webdriver.ChromeOptions()
options.add_argument("--use-fake-ui-for-media-stream")
options.add_argument("--use-fake-device-for-media-stream")
driver = webdriver.Chrome(
   executable_path = chromedriver, 
   chrome_options = options)

31. chromeの拡張機能を使う
chromedriver = 'C:/tests/chromedriver.exe'
extension_path = 'C:/tests/my_extension.zip'
options = webdriver.ChromeOptions()
options.add_extension(extension_path)
driver = webdriver.Chrome(
   executable_path = chromedriver, 
   chrome_options = options)
32. モバイル端末をエミュレート(模倣)する
google_pixel_3_xl_user_agent = 'Mozilla/5.0 (Linux; Android 9.0; Pixel 3 XL Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36'
pixel_3_xl_emulation = {
   "deviceMetrics": {
      "width": 411, 
      "height": 731, 
      "pixelRatio": 3
   },
   "userAgent": google_pixel_3_xl_user_agent
}
options = webdriver.ChromeOptions()
options.add_experimental_option("mobileEmulation", pixel_3_xl_emulation)
driver = webdriver.Chrome(
   executable_path = chromedriver, 
   chrome_options = options)

参照元

・【Python】Seleniumチートシート
https://qiita.com/DisneyAladdin/items/be771591c0a06b30a369
・【完全版】PythonとSeleniumでブラウザを自動操作(クローリング/スクレイピング)するチートシート
https://tanuhack.com/selenium/

12
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
25