LoginSignup
0

More than 5 years have passed since last update.

Windows 10 Pro x64 + Python3 で selenium + chromedriver で要素を操作してみる(その1)

Posted at

目的

日本Seleniumユーザーコミュニティが公開しているテストサイトの要素を操作してみる
※TODO:これ以外の要素

サンプルコード

textbox:値の確認と、テキスト入力後の値を確認する
radio button:値の確認と、他方をクリックした後の値を確認する
checkbox:値の確認と、両方をクリックした後の値を確認する
※注意事項:radio button、checkboxの値の取得


import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome('C:\\Dev\\tool\\webdriver\\chromedriver.exe')  
driver.get('http://example.selenium.jp/reserveApp/')
try:
    # 0.5秒間隔で検索の終了をチェックする(最大10秒)
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, 'goto_next'))
    )

    # 内容の確認
    elm = driver.find_element_by_name('reserve_y')
    print('reserve_y:' + elm.get_attribute('value'))
    elm = driver.find_element_by_name('reserve_m')
    print('reserve_m:' + elm.get_attribute('value'))
    elm = driver.find_element_by_name('reserve_d')
    print('reserve_d:' + elm.get_attribute('value'))
    elm = driver.find_element_by_name('reserve_t')
    print('reserve_t:' + elm.get_attribute('value'))
    elm = driver.find_element_by_name('gname')
    print('gname:' + elm.get_attribute('value'))

    print('input')
    # textbox に入力する clear() -> send_keys()
    elm = driver.find_element_by_name('reserve_y')
    elm.clear()
    elm.send_keys('2020')
    print('reserve_y:' + elm.get_attribute('value'))
    elm = driver.find_element_by_name('reserve_m')
    elm.clear()
    elm.send_keys('3')
    print('reserve_m:' + elm.get_attribute('value'))
    elm = driver.find_element_by_name('reserve_d')
    elm.clear()
    elm.send_keys('14')
    print('reserve_d:' + elm.get_attribute('value'))
    elm = driver.find_element_by_name('reserve_t')
    elm.clear()
    elm.send_keys('2')
    print('reserve_t:' + elm.get_attribute('value'))
    elm = driver.find_element_by_name('gname')
    elm.clear()
    elm.send_keys('tabizou')
    print('gname:' + elm.get_attribute('value'))

    # 内容の確認
    elm = driver.find_element_by_id('breakfast_on')
    print('breakfast_on :' + ('on' if elm.get_attribute('checked') else 'off'))
    elm = driver.find_element_by_id('breakfast_off')
    print('breakfast_off:' + ('on' if elm.get_attribute('checked') else 'off'))

    # breakfast_off をクリック
    driver.find_element_by_id('breakfast_off').click()
    print('clicked')
    elm = driver.find_element_by_id('breakfast_on')
    print('breakfast_on :' + ('on' if elm.get_attribute('checked') else 'off'))
    elm = driver.find_element_by_id('breakfast_off')
    print('breakfast_off:' + ('on' if elm.get_attribute('checked') else 'off'))

    # 内容の確認
    elm = driver.find_element_by_name('plan_a')
    print('plan_a:' + ('on' if elm.is_selected() else 'off'))
    elm = driver.find_element_by_name('plan_b')
    print('plan_b:' + ('on' if elm.is_selected() else 'off'))

    # checkbox をクリックする
    driver.find_element_by_name('plan_a').click()
    driver.find_element_by_name('plan_b').click()

    print('clicked')
    elm = driver.find_element_by_name('plan_a')
    print('plan_a:' + ('on' if elm.is_selected() else 'off'))
    elm = driver.find_element_by_name('plan_b')
    print('plan_b:' + ('on' if elm.is_selected() else 'off'))

    time.sleep(5) # 表示確認用のwait
finally:
    driver.quit()

参考にしたのは以下のサイト

How to check if the radio button is selected or not in Selenium WebDriver?
How to verify if a checkbox is checked using Selenium Webdriver

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
0