HTMLのボタンからPythonスクリプトでBrythonを使ってSeleniumをimportすることはできなかった

初めてHTMLとPythonとBrythonとSeleniumを使った。すべて初めてでなんにもわからなかった。 言葉の使い方すらあってるかわからない。

やろうとしたこと

  1. 自動でウェブサイトにアクセスしてボタンを押すPythonスクリプトをつくる
  2. 指定した時間にPythonスクリプトを実行する
  3. そのスクリプトに画面をつけるため、ブラウザからボタンを押してPythonスクリプトを実行するようにする

環境

windows 10 python selenium brython chromewebdriver

1について

自動でウェブサイトにアクセスするものの作り方を調べたらPythonSeleniumでできることがわかった。自分が見たいサイトと同じところにアクセスするものを作っている人がいたのでここまではすぐ出来た。 一部困ったところは以前はJavaScriptのボタンがなかったからSeleniumで楽にボタンを押すことが出来たみたいだったが、今は変わっていてボタンの押し方がわからなかったことだった。これはxPath FinderというFirefoxのアドオンを使ってボタン名を取得できたのですぐにやりたいことができるようになった。

2について

Pythonでパソコンの時刻を取得する方法はdatetimeをimportすれば良いことがわかった。またPythonでタイマーアプリ作ってるものなどを参考にして、スクリプトを実行したあと指定時間になるまでループし続けて待つ処理を追加した。

3について

Pythonスクリプトは"from Selenium import webdriver"を行って自動でブラウザが起動させることができた。これをブラウザから実行したかったので調べたら、PythonはBrythonを使ってHTMLのボタンから実行することができることがわかった。ここでBrythonとかPhantomJSとかJavaScriptとかDjangoとかいろいろ単語出てきたけれど一つもわからなすぎてとりあえずPython、Brython、HTMLだけを選択してつくることにしたが、ここから地獄だった。

最初は簡単にHTMLの入力欄とボタンを作って、文字を入力してボタンを押すとその文字を表示する画面を作った。ここまではうまく出来た。HTMLのボタンを押すと、Pythonに書いたhello()メソッドでreturn 'Hello'し、ブラウザにHelloが表示されるものだった。

このあとボタンを押してブラウザを起動できるようにするため、"from Selenium import webdriver"のたった一行を追加するだけでボタンが無反応になってしまって何が原因か全くわからなくなってしまった。デバッグ方法もわからないのでひたすら"brython selenium html"の単語を混ぜてググりまくった。全く情報が出てこなかったのでpythonデバッグ方法を調べ始めたけれどこれも全く知りたいことが出てこなくてもうほかの方法で作るしかないかと思ってDjangoとかAjaxとか調べ始めた。

それでもBrythonは諦めたとしてもなんでたった一行importするだけで動かなくなるのか原因しりたくていろいろ考えていたら、たまたまブラウザの開発者モードがあることを思い出した。試しにFirefoxでF12で開いていろいろいじっていたら偶然Consoleタブにエラーが出ることがわかった。 そしたらそこに

Traceback (most recent call last):
ImportError: No module named selenium brython.js:5887:9

と出ていた。デバッグ方法がわかってとてもラッキーだった。

ImportErrorだとわかったので「"ImportError: No module named selenium" brython」でググったらたった3件だけヒットし、BrythonではSeleniumを実行できないって書かれていたのでようやく諦めがついた。

また最初から別の方法をググらなきゃいけなくなった。