前提・実現したいこと
Windows10
python3.7
Anaconda3
上記の開発環境でSeleniumを使用してのwebサイトのスクレイピングを行っています。(宿泊予約サイト)
手順としてはトップページにアクセス→ログイン画面に移動→ログインパスワード自動入力(ログイン)→
検索条件の自動入力入力(各フォーム)という流れになります。
宿泊日程の自動入力機能を実装するために、初期に入力されているテキストを削除→希望日を入力という
機能を実装中に以下のエラーメッセージが発生しました。
※element.send_keys(Keys.DELETE)を使用していない理由は、入力フォームの性質上、deleteキーが反応しないため、
ctrl+a→Backspaceという流れで入力フォームを空白にした後に希望日の入力を実施しようとしています。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "<ipython-input-54-fb49afe51716>", line 12, in <module> checkinday_input.element.send_keys(Keys.CONTROL,"a") AttributeError: 'WebElement' object has no attribute 'element'
コード
pip install selenium #ログイン画面へ遷移 from selenium import webdriver from time import sleep browser = webdriver.Chrome(executable_path="C:/Users/endes/work/chromedriver") browser.get('https://jp.hotels.com/?intlid=SIGNIN+%3A%3A+header_main_section') MAILADRESS = '自身のメールアドレス' PASSWORD = '自身のパスワード' error_flg = False sleep(3) try: login_button = browser.find_element_by_link_text('ログイン') login_button.click() sleep(3) except: import traceback traceback.print_exc() #メールアドレス_パスワードを入力→ログイン if error_flg is False: try: mailadress_input = browser.find_element_by_xpath('//*[@id="sign-in-email"]') mailadress_input.send_keys(MAILADRESS) sleep(1) password_input = browser.find_element_by_xpath('//*[@id="sign-in-password"]') password_input.send_keys(PASSWORD) userlogin_button = browser.find_element_by_xpath('//*[@id="maincontent"]/div/div/div/div/div/div[3]/form/button') userlogin_button.click() sleep(3) except: import traceback traceback.print_exc() #場所指定→チェックイン日入力→チェックアウト日入力 if error_flg is False: SEARCHLOCATION = '東京 赤坂' CHECKINDAY = '2020/04/29' CHECKOUTDAY = '2020/05/02' try: searchlocation_input = browser.find_element_by_xpath('//*[@id="qf-0q-destination"]') searchlocation_input.send_keys(SEARCHLOCATION) sleep(1) checkinday_input = browser.find_element_by_xpath('//*[@id="qf-0q-localised-check-in"]') checkinday_input.element.send_keys(Keys.CONTROL,"a") checkinday_input.element.send_keys(Keys.BACK_SPACE) checkinday_input.send_keys(CHECKINDAY) sleep(3) checkoutday_input = browser.find_element_by_xpath('//*[@id="qf-0q-localised-check-out"]') checkoutday_input.element.send_(Keys.CONTROL,"a") checkoutday_input.element.send_(Keys.BACK_SPACE) checkoutday_input.send_keys(CHECKOUTDAY) sleep(3) except: import traceback traceback.print_exc()
補足情報
checkinday_input.element.send_keys(Keys.CONTROL,"a") checkinday_input.element.send_keys(Keys.BACK_SPACE)
上記のコードを抜いた状態での動作は行えていますが、初期に入力されている日程の後ろに自身の指定した日程が追記されるような形になってしまう状態です。
回答1件
あなたの回答
tips
プレビュー