しょっちゅう忘れることを書いておく。
![]() |
67 |
1776 views
expected_conditions.element_to_be_clickable
Seleniumでウェブページの要素を操作する際、要素が画面上に表示されていても、クリックができない場合があります。これは、要素がまだ完全にロードされていなかったり、非アクティブな状態である場合に発生します。このような問題に対処するために、expected_conditions.element_to_be_clickable
を使って、要素がクリック可能になるまで待機することができます。
import os
from selenium import webdriver
from selenium.webdriver.common.alert import Alert
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
def get_xpath(driver, path):
# find_element_by_xpathと毎回書くのが面倒なので関数作成
return driver.find_element_by_xpath(path)
if __name__ == '__main__':
options = webdriver.ChromeOptions()
#options.add_argument() # 必要に応じてオプションを追加
driver = webdriver.Chrome(os.path.join(os.getcwd(), "chromedriver.exe"), options=options)
# 指定されたURLにアクセス
driver.get('https://www.osumoi-stdio.com/')
# WebDriverWaitを使用して、要素が表示されるまで最大10秒待機
wait = WebDriverWait(driver, 10)
# キーワード入力
get_xpath(driver, '//*[@id="id_key_word"]').send_keys('暗号資産')
# ボタンがクリックできるようになるまで待機
wait.until(expected_conditions.element_to_be_clickable((By.XPATH, '/html/body/div[2]/div[1]/div[1]/div/form/p[2]/button')))
# ボタンをクリック
get_xpath(driver, '/html/body/div[2]/div[1]/div[1]/div/form/p[2]/button').click()
webdriver.ChromeOptions()
の設定
webdriver.ChromeOptions()
を使って、Chromeブラウザのオプションを設定します。必要に応じて追加のオプション(ヘッドレスモードなど)をoptions.add_argument()
で指定できます。ブラウザの起動
webdriver.Chrome(os.path.join(os.getcwd(), "chromedriver.exe"), options=options)
で、Chromeドライバーを使用してブラウザを起動します。os.path.join(os.getcwd(), "chromedriver.exe")
は、実行ディレクトリにあるchromedriver.exe
を指定しています。Webページへのアクセス
driver.get('https://www.osumoi-stdio.com/')
で、指定されたURLにアクセスします。要素が表示されるまで待機
WebDriverWait(driver, 10)
で最大10秒間、指定した条件が満たされるのを待ちます。expected_conditions.element_to_be_clickable
を使って、要素がクリック可能になるまで待機します。(By.XPATH, 'xpath')
の形式で要素を指定しています。要素操作
get_xpath(driver, 'xpath').send_keys('暗号資産')
で、検索キーワードなどの入力を行います。get_xpath(driver, 'xpath').click()
で、クリック操作を行います。expected_conditions.element_to_be_clickable
は、要素がdisplay
状態で、かつenabled
な状態になったことを確認しますが、それでもうまくいかない場合はJavaScriptを使って直接クリックするなどの方法を検討する必要があります。chromedriver
がパスにない場合、実行ファイルのパスを正しく指定するようにしてください。Page 12 of 69.
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/