質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

FileMaker

FileMaker(ファイルメーカー)は、ファイルメーカー社が開発しているデータベース構築ソフトウェアです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

852閲覧

Python webスクレイピング 入力できない

tada_no

総合スコア0

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

FileMaker

FileMaker(ファイルメーカー)は、ファイルメーカー社が開発しているデータベース構築ソフトウェアです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/04/26 23:50

前提・実現したいこと

Pythonでwebスクレイピングの勉強中です。

WEB版のFileMakerでテキストボックスに自動で入力したいのですが、
1)要素を取得したあと、ボックス内をclearしようとするとエラーがでます。
試しに、ボックスをあらかじめマウスで選択状態にした場合、sendkeysまで問題なく入力できます。

2)そのため無理くりpyautoguiでtabキー入力し、該当のボックスまで辿りつかせた状態でやってみると
clearまではできてsendkeysで入力できず、さらにエラーになりません。

問題は何でしょうか。ここ3週間ほど悩んでます。
tabキー入力などせず、スマートに1)で入力できるようにしたいです。
宜しくお願いします。

発生している問題・エラーメッセージ

1)のエラー

--------------------------------------------------------------------------- InvalidElementStateException Traceback (most recent call last) <ipython-input-24-cfd3d072337e> in <module> 14 elebikou = browser.find_element_by_xpath('//*[@id="b0p1o123i0i0r1"]/div/div[1]') 15 ---> 16 elebikou.clear() 17 elebikou.send_keys('111') 18 ~\Anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py in clear(self) 93 def clear(self): 94 """Clears the text if it's a text entry element.""" ---> 95 self._execute(Command.CLEAR_ELEMENT) 96 97 def get_property(self, name): ~\Anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py in _execute(self, command, params) 631 params = {} 632 params['id'] = self._id --> 633 return self._parent.execute(command, params) 634 635 def find_element(self, by=By.ID, value=None): ~\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in execute(self, driver_command, params) 319 response = self.command_executor.execute(driver_command, params) 320 if response: --> 321 self.error_handler.check_response(response) 322 response['value'] = self._unwrap_value( 323 response.get('value', None)) ~\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self, response) 240 alert_text = value['alert'].get('text') 241 raise exception_class(message, screen, stacktrace, alert_text) --> 242 raise exception_class(message, screen, stacktrace) 243 244 def _value_or_default(self, obj, key, default): InvalidElementStateException: Message: invalid element state (Session info: chrome=90.0.4430.93)

該当のソースコード

1)
elebikou = browser.find_element_by_xpath('//*[@id="b0p1o123i0i0r1"]/div/div[1]')
elebikou.clear()
elebikou.send_keys('111')

試したこと

1)でボックスをあらかじめマウスで選択状態にした場合は問題なくいけるので
以下の2)で試しましたが、clearまでできsendkeysで入力されず、さらにエラーになりません。

2)
pyautogui.click(x=432, y=864)
time.sleep(1)
pyautogui.press('tab')
time.sleep(1)
pyautogui.press('tab')
time.sleep(1)
pyautogui.press('tab')
time.sleep(1)
pyautogui.press('tab')
time.sleep(1)
pyautogui.press('tab')
time.sleep(1)
elebikou = browser.find_element_by_xpath('//*[@id="b0p1o123i0i0r1"]/div/div[1]')
elebikou.clear()
elebikou.send_keys('111')

補足情報(FW/ツールのバージョンなど)

取得したい場所

<div class="fm-textarea v-widget v-has-width v-has-height fm-inactive iwps_edit_box fm-textarea-iwps_edit_box fm_object_123 fm-textarea-fm_object_123" id="b0p1o123i0i0r1" style="top: 367px; left: 119px; width: 316px; height: 43px;"><div class="inner_border"><div class="text" tabindex="0">uu<br></div><div class="placeholder"></div></div></div>

取得したい場所のfull XPath
/html/body/div[1]/div/div[2]/div[2]/div/div[2]/div/div/div[2]/div/div/div[2]/div/div[8]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問