しょっちゅう忘れることを書いておく。
![]() |
66 |
1689 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/