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(###)
この記事が気に入ったらサポートをしてみませんか?