• 締切済み

Python。Seleniumの動作。

個人的に仕事などで使えるプログラムツールを作りたいと思い、現在Pythonを勉強しています。 が、スタンパーみたいなソフトや、ログインなどの動作をしてくれるとか、自動でプルダウンをランダムに選択してくれるようなワンボタンのソフト等を作りたくてGUI前提で考えていたのですが、そもそもPythonをGUIにするのは重いからあまりしないと後で知りました。 色々調べたり聞いたりすると、そういう目的ならPythonがいいんじゃないかみたいに言われたりもしたのですが… SeleniumならWEBの自動操作が出来るということで色々弄っていたのですが、確かに操作は少し出来るようになってきましたが、あまりにも動作がアナログ的というか… 表示されていない要素は指定できないとか、WEBページの読み込みが間に合わないと動作がバグるとか。 個人的にはプログラムというのはもっと『このボタンを押せとコードを書いたらボタンを確実に押して進行してくれる』ものだと思っていたのですが。 こういうものなのでしょうか? それともSeleniumが実際に人が操作する動作をしっかり守ったものなのでしょうか。 これが例えば他の言語でコードを組んだ場合も、同じような動作になってしまうのでしょうか。

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

>個人的にはプログラムというのはもっと『このボタンを押せとコードを書いたらボタンを確実に押して進行してくれる』ものだと思っていたのですが。 はい、そういうものです。 ただし指示相手が人間ならボタンがまだ表示されていなかった場合は「ボタン表示されていないから、表示されるまで待とう」という判断をしてくれるでしょうが、 プログラムはそんな事はしてくれません。 プログラムは、あなたがコードに書いたことを書かれたとおりに実行するだけで、 あなたが思ったことを実行してくれるわけではありません。

  • Proof4
  • ベストアンサー率78% (151/192)
回答No.1

端的な回答としては「こういうもの」ということになります。 人間は「指定されたボタンを確実に押す」という操作を容易に行うことができますが、少なくともSeleniumの場合はその背景で何気なく行なわれている、「ページが読み込まれるまで待つ」や「ボタンの存在を認識して押す」といった動作をすべて教えてあげる必要があります。 また、Seleniumはブラウザでの表示や操作が仕様通りに行えるかのテストにも用いられています。 したがって、表示されていない要素はむしろ操作できてはいけません。そういう意味ではある程度人間の操作に即した動作になります。 一方で、任意のCSSを適用したりJavaScriptを実行できるので人間よりも容易にハック的な操作ができます。 他の言語でSeleniumを利用した場合でも動作は同じになります。RPAツールなどを利用すると使用感が変わると思います。

関連するQ&A