目次

selenium

導入

$pip install 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()