Q&A
実現したいこと
閲覧頂き、ありがとうございます。
visaのサイトから特定日の為替レートを取得するため
開発しています。
Python初心者ですが、皆様のお知恵をお借りしながら
何とか1歩ずつ進めております。
前提
■対象サイト
https://usa.visa.com/support/consumer/travel-support/exchange-rate-calculator.html
上記サイトにて為替レートの情報を得るには
「Calculate Conversion」のボタンをクリックする前に
「from」「to」の通貨をマウスにてクリックして選択する必要があります。
ActionChainsで「from」のボタンをクリックし
上記リストを表示させるところまではできるのですが、
その後に表示されるリストをマウスでクリックさせる方法が
見当たらず躓いています。
ここでsend_keys('USD')などで入力してしまうと、
最後の「Calculate Conversion」をクリックした段階で
エラーとなるので、リストからマウスでのクリックで
進める必要があると考えています。
該当のソースコード
Python
1from selenium import webdriver 2!pip install webdriver_manager 3from time import sleep 4from webdriver_manager.chrome import ChromeDriverManager 5 6#ブラウザで対象ページを開く 7browser = webdriver.Chrome(ChromeDriverManager().install()) 8url = ('https://usa.visa.com/support/consumer/travel-support/exchange-rate-calculator.html') 9browser.get(url) 10sleep(4) 11 12 13from selenium.webdriver.common.by import By 14 15 16#Cookie同意ボタンをクリック 17elem_ok_btn = browser.find_element(By.XPATH, '//*[@id="CookieReportsBanner"]/div[1]/div[2]/a[1]') 18elem_ok_btn.click() 19 20#Fromのボックスを取得しUSDを入力 21from_coin = browser.find_element( 22 By.XPATH, "//dm-calculator" 23).shadow_root.find_element(By.ID, "autosuggestinput_from") 24from_coin.send_keys('USD') 25 26#Toの項目を取得しJPYを入力 27to_coin = browser.find_element( 28 By.XPATH, "//dm-calculator" 29).shadow_root.find_element(By.ID, "autosuggestinput_to") 30to_coin.send_keys('JPY') 31 32#Amountのボックスを取得し100入力(要素がshadow-rootに含まれるので取得の仕方を工夫) 33amount = browser.find_element( 34 By.XPATH, "//dm-calculator" 35).shadow_root.find_element(By.ID, "input_amount_paid") 36amount.send_keys('100') 37 38#Editの要素を取得 39edit_btn = browser.find_element( 40 By.XPATH, "//dm-calculator" 41).shadow_root.find_element(By.CSS_SELECTOR, "button.vs-link-cta.vs-calculator-edit-link") 42edit_btn.click() 43 44#tran_dateを取得 45tran_date = browser.find_element( 46 By.XPATH, "//dm-calculator" 47).shadow_root.find_element(By.ID, "dateinput_date") 48 49sleep(4) 50tran_date.clear() 51sleep(4) 52tran_date.send_keys('12/01/2022') 53sleep(4) 54tran_date.clear() 55sleep(4) 56tran_date.send_keys('12/01/2022') 57 58#Fromのプルダウン選択 59from_list = browser.find_element( 60 By.XPATH, "//dm-calculator" 61).shadow_root.find_element(By.CSS_SELECTOR, "button.vs-btn.vs-btn-dropdown-icon") 62from_list.click() 63
補足情報(FW/ツールのバージョンなど)
Python 3.11.1
selenium 4.7.2
jupyter lab
回答2件
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。