selenium
導入
オプション
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
option = Options()
option.add_argument('xxx')
driver = webdriver.Chrome('DriverPath', options = option)
メソッド
要素
# ID
driver.find_element_by_id('id_')
# XPath
driver.find_element_by_id('xpath_')
driver.find_elements_by_id('xpath_')
操作
# XXXを送信
driver.find_element_by_id('id_').send_keys('XXX')
# 入力欄をクリア
driver.find_element_by_id('id_').clear()
# クリック
driver.find_element_by_id('id_').click()
リモート
from selenium import webdriver
driver = webdriver.Remote(
command_executor='http://private_chrome:4444/wd/hub'
)
サンプル
import platform
import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
def main():
os = platform.system()
option = Options()
option.add_argument('--mute-audio')
option.add_argument('--no-sandbox')
option.add_argument('--disable-gpu')
option.add_argument('--disable-dev-shm-usage')
if (os == 'Linux'):
option.add_argument('--headless')
option.add_experimental_option('excludeSwitches', ['enable-logging', 'enable-automation'])
driver = webdriver.Chrome(
ChromeDriverManager().install(),
options = option
)
wait = WebDriverWait(driver, 10)
try:
if (os == 'Windows'):
driver.maximize_window()
driver.get('TARGET_URL')
wait.until(
expected_conditions.visibility_of_element_located(
(By.ID, 'xxx')
)
)
if (os == 'Linux'):
w = driver.execute_script('return document.body.scrollWidth')
h = driver.execute_script('return document.body.scrollHeight')
driver.set_window_size(w, h)
driver.save_screenshot('test.png')
input('Press Enter...')
except Exception as e:
print('ERROR:', str(e))
driver.quit()
else:
driver.quit()
if (__name__ == '__main__'):
main()