Python Selenium element not interactable

PC

PythonのSeleniumを使って面倒な作業は自動化させています。
とくにブログに画像ファイルをアップロードさせる作業などは、予め自動でサーバーに載せておいたほうが後々楽だったりするので、そういうときにもSeleniumのプログラムは役に立ちますね。
アップロードをさせるのにファイル選択のボタンから、自PCのフォルダからファイルを選択してアップロードボタンを押して、というのを繰り返すのも面倒だったりするので。

そんな作業をプログラムするときによく躓くのが、「element not interactable」というエラー。
クリックしたいのに出来ない、とか、情報を送り込んでくれない、とかそういう系統です。
エレメントは見つかっているのに何でダメかなぁ、と言いたくなりますが、大抵の場合、次の2つのパティーンに分けられます。

1.複数のエレメントがあって、望みのものじゃない方を選択してしている

例えばこんな文。

element = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'admin_common_positive_btn')))
element.click()

「admin_common_positive_btn」というクラスで見つけ出したelemenntをクリックさせたい。
なのに「element not interactable」と返ってくる。
いやいやいや、ボタンって書いてあるやん。
押せるでしょ。押させてよ。と思うわけですが…。
何度やっても無理。
もしかして、このクラスが複数ある?
ということで

elements = driver.find_elements_by_class_name('admin_common_positive_btn')
print(len(elements))

としてみたら、2とか3とか、複数の数字が返ってきまして、そういうことか、と。

elements = driver.find_elements_by_class_name('admin_common_positive_btn')
elements[1].click()

としてみたらとりあえずは動いたのでヨシ。
必ずしも常に2番めに望みのボタンがあるとは限らないので、本当はもう少し詰めないといけないのでしょうが、とりあえずはこれで。
実務的には、クラスでなく常にページ内で一つに絞れる何かを見つけられれば、それを使うほうが良いとは思います。
IDとか。

2.インプットできないクラスにインプットさせようとしている。

例えばこんなHTMLで書かれたアップロード先。

<div class="FileUploader_header">
 <span><span id="spanButtonPlaceHolder">ファイル選択</span>
  <input name="upfile[]" type="file" multiple="true">
 </span>
<p>Ctrlキーを押しながらファイルを同時に選択できます。</p>
</div>

Chromeで開いた見え方はこんな感じです。

アップロード先のクラスは「FileUploader_header」なんだな、ということで

drop_btn = driver.find_element_by_id('spanButtonPlaceHolder')
drop_btn.send_keys(ImgFlePath + flename)

こんな文章でアップロードさせようとして失敗。
同様にクラスで指定し「FileUploader_header」を選択しても失敗。
これを、

drop_btn = driver.find_element_by_name('upfile[]')
drop_btn.send_keys(ImgFlePath + flename)

としたら成功しました。
インプットを受け付ける要素でないと受け付けない、というシンプルな結論でした。
少しググって、「divタグに入力は出来ませんよ」という書き込みを見て気づいたのでした。

Selenium本

Selenium実践入門 自動化による継続的なブラウザテスト (WEB+DB press plusシリーズ) [ 伊藤望 ]
Selenium実践入門 自動化による継続的なブラウザテスト (WEB+DB press plusシリーズ) [ 伊藤望 ] 3,630円(税込)【送料込】

楽天ブックス

自動化による継続的なブラウザテスト WEB+DB press plusシリーズ 伊藤望 戸田広 技術評論社セレニウム ジッセン ニュウモン イトウ,ノゾミ トダ,ヒロシ 発行年月:2016年02月02

Seleniumデザインパターン & ベストプラクティス [ DimaKovalenko ]
Seleniumデザインパターン & ベストプラクティス [ DimaKovalenko ] 3,300円(税込)【送料込】

楽天ブックス

DimaKovalenko 太田健一郎 オライリー・ジャパン オーム社セレニウム デザインパターン アンド ベストプラクティス ディマコヴァレンコ オオタケンイチロウ 発行年月:2015年09月25日

実践Selenium WebDriver [ サタヤ・アバサララ ]
実践Selenium WebDriver [ サタヤ・アバサララ ] 3,300円(税込)【送料込】

楽天ブックス

サタヤ・アバサララ 玉川竜司 オライリー・ジャパン オーム社ジッセン セレニウム ウェブドライバー アバサララ,サタヤ タマガワ,リュウジ 発行年月:2014年09月 ページ数:240p サイズ:単行

500 Selenium Testing Interview Questions and Answers【電子書籍】[ Vamsee Puligadda ]
500 Selenium Testing Interview Questions and Answers【電子書籍】[ Vamsee Puligadda ] 200円(税込)【送料込】

楽天Kobo電子書籍ストア

<p>Knowledge for Free...</p> <p>Get that job, you aspire for!</p> <p>Want to switch to that high pay

【送料無料】 Selenium実践入門 自動化による継続的なブラウザテスト WEB+DB PRESS plusシリーズ / 伊藤望 (Book) 【本】
【送料無料】 Selenium実践入門 自動化による継続的なブラウザテスト WEB+DB PRESS plusシリーズ / 伊藤望 (Book) 【本】 3,630円(税込)【送料込】

HMV&BOOKS online 1号店

基本情報ジャンル建築・理工フォーマット本出版社技術評論社発売日2016年02月ISBN9784774178943発売国日本サイズ・ページ395p 21cm(A5)関連キーワード 97847741789

楽天ウェブサービスセンター
タイトルとURLをコピーしました