フォーム要素の取得
# フォーム全体を取得
form = soup.find('form', id='registration-form')
# 入力フィールドを取得
inputs = form.find_all('input')
# セレクトボックスのオプション
select = form.find('select', {'name': 'country'})
options = select.find_all('option')
# 隠し要素も取得
hidden_inputs = form.find_all('input', type='hidden')
フォーム値の抽出
# 入力フィールドの値
value = input_field.get('value', '')
# セレクトボックスの選択値
selected = select.find('option', selected=True)
# チェックボックスの状態
is_checked = checkbox.get('checked') is not None
# ラベルテキストの取得
label = soup.find('label', {'for': 'field_id'}).text
検索結果の取得
# 検索結果エリアを取得
results = soup.find('div', id='search-results')
# 各商品アイテムを取得
products = results.find_all('div', class_='search-result-item')
for product in products:
name = product.find(class_='product-name').text
price = product.get('data-price')
category = product.get('data-category')
print(f"{name}: ¥{price} ({category})")
Seleniumでフォーム操作
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://localhost:3000/form")
# フォームに値を入力
keyword_input = driver.find_element(By.ID, "search-keyword")
keyword_input.send_keys("Python")
# セレクトボックスを選択
category_select = driver.find_element(By.ID, "category-search")
category_select.send_keys("books")
# 検索ボタンをクリック
search_btn = driver.find_element(By.CSS_SELECTOR, "button[type='submit']")
search_btn.click()
# 結果を取得
results = driver.find_elements(By.CLASS_NAME, "search-result-item")