Python - selenium series

そもそもここを見て勉強しています

参考はここが最高です。私のは自分用に使うものを書き残しているだけです。

pip

pip install selenium #バイナリ 
pip install chromedriver-binary
##ver指定
pip install chromedriver-binary==***
# New
pip install webdriver_manager

モジュール

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.alert import Alert
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

from webdriver_manager.chrome import ChromeDriverManager
import chromedriver_binary

ブラウザの立ち上げ

 #Chrome 
driver = webdriver.Chrome()
driver = webdriver.Chrome(ChromeDriverManager().install()) #Firefox 
driver = webdriver.Firefox()

基本動作

driver.get(*url*) #要素取得 (以下 element)
driver.find_element_by_id(id)
driver.find_element_by_name(name)
driver.find_element_by_class_name(name)
driver.find_element_by_tag_name(name)
driver.find_element_by_xpath(xpath)
driver.find_element_by_css_selector(css_selector)
driver.find_element_by_link_text(link_text)
driver.find_element_by_partial_link_text(link_text) #要素動作 
##タイプ
element.send_keys(***)
##クリア
element.clear()
##認証
element.submit()
##クリック
element.click()

##テキスト取得
element.text
##属性値取得
element.get_attribute('属性')

##特殊キー送信
element.send_keys(Keys.ENTER)
element.send_keys(Keys.BACK_SPACE)
element.send_keys(Keys.ESCAPE)
element.send_keys(Keys.TAB)

##タイトル
title = driver.title

##URL
url = driver.current_url

##バック(戻る)
driver.back()
##取り消し(進む)
driver.forward()
##更新(リロード)
driver.refresh()

##閉じる
###CTRL + W
driver.close()
###CTRL + Q
driver.quit()

##最大化
driver.maximize_window()

伝家の宝刀、テーブル取得

##必要!
from selenium.webdriver.common.by import By
↑要注意
# テーブル内容取得
tableElem = テーブル要素を取得
trs = tableElem.find_elements(By.TAG_NAME, "tr")
# ヘッダなどに合わせて開始行はrangeで指定する
arr = []
for i in range(1,len(trs)):
   tds = trs[i].find_elements(By.TAG_NAME, "td")
   line = []
   for j in range(0,len(tds)):
       line.append(tds[j].text)
   arr.append(line)

python_command

オプション

options = Options()
options.add_argument('--disable-gpu')
options.add_argument('--disable-extensions')
options.add_argument('--proxy-server="direct://"')
options.add_argument('--proxy-bypass-list=*')
options.add_argument('--start-maximized')

Headless Chrome

option = Options() 
option.add_argument('--headless') 
driver = webdriver.Chrome(options=option)

待機

暗黙

driver.implicitly_wait(10) #second

明示的

element = WebDriverWait(driver, 30).until(
	EC.visibility_of_element_located((By.CSS_SELECTOR, selector))
)
alert_is_present Alertが表示されるまで
element_to_be_clickable 要素がクリック出来る状態になるまで
visibility_of_element_located 指定した要素が表示されるまで
invisibility_of_element_located 指定した要素が非表示になるまで
text_to_be_present_in_element 指定したテキストが表示されるまで
presence_of_element_located 指定した要素がDOM上に現れるまで

select要素

Select(element).select_by_value('{{ value }}')
Select(element).select_by_index('{{ インデックス }}')
Select(element).select_by_visible_text('{{ option要素の表示テキスト }}')

<html>タグ要素取得

####タグ取得
element = driver.find_element_by_id(###)
valString = element.tag_name
if valString == input:
   print(###)


この記事が気に入ったらサポートをしてみませんか?