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

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

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

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

selenium

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

Q&A

解決済

2回答

5101閲覧

Pythonのseleniumでチェックボックスにチェックを入れたい

takahiro00

総合スコア84

Python

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

selenium

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

0グッド

1クリップ

投稿2020/03/25 15:06

編集2020/03/26 14:10

前提・実現したいこと

Pythonのseleniumでチェックボックスにチェックを入れたいのですが、
うまくいきません。。。

追記

PYTHON

1test = driver.find_element_by_id('mypage_setting_proids_1') 2print(test.is_selected())

こんな感じでやるとFalseが取得できるので、
要素は上記でいいはずなのですが、チェック(クリック)ができません。。。。

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

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable (Session info: chrome=80.0.3987.149)

該当のソースコード

チェックしたいチェックボックスのHTMLは以下です。
テスト1にチェックを入れたいです。

HTML

1 <form method="post" id="mypageSettingForm" action="https://~~"> 2 <legend>テスト</legend> 3 <div class="form-group proids"> 4 <input type="checkbox" name="proids[]" id="mypage_setting_proids_1" value="1" /> 5 <label for="mypage_setting_proids_1">テスト1</label> 6 <input type="checkbox" name="proids[]" id="mypage_setting_proids_2" value="2" /> 7 <label for="mypage_setting_proids_2">テスト2</label> 8 <input type="checkbox" name="proids[]" id="mypage_setting_proids_3" value="3" /> 9 <label for="mypage_setting_proids_3">テスト3</label> 10 <input type="checkbox" name="proids[]" id="mypage_setting_proids_4" value="4" /> 11 <label for="mypage_setting_proids_4">テスト4</label> 12 <input type="checkbox" name="proids[]" id="mypage_setting_proids_5" value="5" /> 13 </form>

取得用ソースは以下です。

PYTHON

1driver.find_element_by_id('mypage_setting_proids_1').click()

試したこと

xpathにしたり、find_element_by_css_selectorでチェックしようとしたりしたのですが、
うまくチェックができません。

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

Pytgon3.7

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

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

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

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

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

guest

回答2

0

自己解決

driver.execute_script("arguments[0].click();", driver.find_element_by_id("mypage_setting_proids_1"))

上記のやり方で解決できました!

投稿2020/03/27 15:31

takahiro00

総合スコア84

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

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

0

python

1driver.find_element_by_xpath("//*[@id='mypageSettingForm']/div[1]/label[1]/").click()

このXPATHはcheckboxではなくラベルを選択していると思います。
どうせなら、@id='mypage_setting_proids_2'を指定するのが手っ取り早いと思います

投稿2020/03/25 15:18

t_obara

総合スコア5488

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

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

takahiro00

2020/03/26 12:22

回答ありがとうございます。 driver.find_element_by_xpath("//*[@id='mypage_setting_proids_2']/div[1]/label[1]/").click() 上記で試しましたがダメでした。
takahiro00

2020/03/26 12:35

driver.find_element_by_id('mypage_setting_proids_1').click() ちなみにこれでもダメです。 driver.find_element_by_xpath("//*[@id='mypage_setting_proids_1']/").click() こんな感じでもダメでした・・・・・
t_obara

2020/03/27 03:43

ダメとは、チェックが付かないということですよね? その場合、要素が取得できているかを確認してみると良いです。
takahiro00

2020/03/27 13:48 編集

test = driver.find_element_by_id('mypage_setting_proids_1') print(test.is_selected()) 上記でFalseが取得できるので要素は取得できているはずなのです
t_obara

2020/03/27 14:27

EC.element_to_be_clickable で確認してTrueであれば、あとは画面外の要素なので、要素を表示するようにスクロールすると良いかもしれません。 driver.execute_script("arguments[0].scrollIntoView(true);", test)
takahiro00

2020/03/27 14:51

あれ、、、、 そもそもこれでスクロールしません。。。。 driver.execute_script("arguments[0].scrollIntoView(true);", test) もう軽いパニックです
t_obara

2020/03/27 14:59

スクロールするページなんですか?
takahiro00

2020/03/27 15:12

スクロールするページです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問