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

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

新規登録して質問してみよう
ただいま回答率
86.12%
Python

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

解決済

Python Seleniumでテキスト入力しようとするとElementNotInteractableExceptionのエラーが出る

hatahata627
hatahata627

総合スコア1

Python

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

1回答

0リアクション

0クリップ

293閲覧

投稿2022/08/24 13:21

編集2022/08/31 12:50

前提

(質問投稿初めてのため、不足情報などありましたらすみません)
PythonのSeleniumでWebページの操作を行うプログラムを書いているのですが、以下のエラーがどうしても解決できず、どなたかご教示をいただけますと幸いです。
操作したいWebページが、TableauというBIツールでifameが使われているなど、やや複雑な構造となっております。

実現したいこと

・ダッシュボードの日付フィルターに週数を入力して、データを更新したい。
(send_keysでテキストを入力したい)

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

・send.keysでテキストを入力しようとすると、下記のエラーメッセージが出て実行できません。
・.clickや.textは実行ができるため、指定しているxpathは間違っていないと思われます。

python

ElementNotInteractableException Traceback (most recent call last) Input In [14], in <cell line: 2>() 1 weekinput = driver.find_element_by_xpath('//*[@id="tableau_base_widget_LegacyQuantitativeQuickFilter_0"]/div/div[2]/div[2]/input') ----> 2 weekinput.send_keys('33') File c:\users\yuuka\appdata\local\programs\python\python38\lib\site-packages\selenium\webdriver\remote\webelement.py:540, in WebElement.send_keys(self, *value) 537 remote_files.append(self._upload(file)) 538 value = '\n'.join(remote_files) --> 540 self._execute(Command.SEND_KEYS_TO_ELEMENT, 541 {'text': "".join(keys_to_typing(value)), 542 'value': keys_to_typing(value)}) File c:\users\yuuka\appdata\local\programs\python\python38\lib\site-packages\selenium\webdriver\remote\webelement.py:710, in WebElement._execute(self, command, params) 708 params = {} 709 params['id'] = self._id --> 710 return self._parent.execute(command, params) File c:\users\yuuka\appdata\local\programs\python\python38\lib\site-packages\selenium\webdriver\remote\webdriver.py:424, in WebDriver.execute(self, driver_command, params) 422 response = self.command_executor.execute(driver_command, params) 423 if response: --> 424 self.error_handler.check_response(response) 425 response['value'] = self._unwrap_value( 426 response.get('value', None)) 427 return response File c:\users\yuuka\appdata\local\programs\python\python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py:247, in ErrorHandler.check_response(self, response) 245 alert_text = value['alert'].get('text') 246 raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here --> 247 raise exception_class(message, screen, stacktrace)

該当のソースコード

python

week = driver.find_element_by_xpath('//*[@id="tableau_base_widget_LegacyQuantitativeQuickFilter_0"]/div/div[2]/div[2]/input') week.send_keys('33')

試したこと

・xpath以外にもidやclass nameなどでも試しましたが全てエラーとなってしまいました。
・inputタグの1つ上の階層のdivタグの方は.click()で選択することができましたが、inputタグの方はclickもsend_keysもできない状況です。
・このダッシュボードはiframeが使われていたため、最初に下記のコードでiframe内の操作に切り換えています。(切り替える前はclickもできませんでしたが、切り換えることで操作ができるようになりました)

python

iframe = driver.find_element_by_xpath('//*[@id="viz"]/iframe') driver.switch_to.frame(iframe)

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

ご参考に、週数を入力したい箇所のhtmlを記載いたします。

html

<div class="QFReadout QFUpperBound tab-ctrl-formatted-border-hover active" dojoattachevent="onclick:showUpperInput" dojoattachpoint="domUpperBound" style="width: 74px;"><div class="readoutText tab-ctrl-formatted-fixedsize" dojoattachpoint="domUpperText" style="display: none;">32</div><input type="text" dojoattachpoint="domUpperInput" style="width: 74px;"></div> <div class="readoutText tab-ctrl-formatted-fixedsize" dojoattachpoint="domUpperText" style="display: none;">32</div> <input type="text" dojoattachpoint="domUpperInput" style="width: 74px;"> <div dojoattachpoint="domBar" class="QFSlider QFBar" style="width: 140px; top: 28px; left: 12px;"><div dojoattachpoint="domRange" class="QFRange" dojoattachevent="onmousedown:startRangeCapture" style="left: 0px; width: 85px;"><div dojoattachpoint="domHighlight" class="QFRangeHighlight" style="visibility: hidden; left: 0px; width: 85px;"></div></div></div>

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。