Seleniumとユーザー手動操作の組み合わせ

2,148 views
Skip to first unread message

Naruhiko Ogasawara

unread,
Nov 3, 2014, 11:07:03 PM11/3/14
to selen...@googlegroups.com
小笠原と申します。はじめまして。

正直、Web技術はあんまり知らないので、恐る恐る書き込みます。
語彙が足りなくてなんか変な言い回しで恐縮なんですが。

SeleniumをWebスクレイピングっぽく使おうと思っています。
で、諸事情ありまして、すべてを自動化することはできず:

・(可能ならターゲットのWebページを開くところも手動)
・問い合わせフォームをFillしてクエリーを発行するところまでは手動
・クエリーの結果、遷移したページのDOMツリーを舐めてファイルに落とすのを自動化

したいわけなのですね。

超特急で玉川さん訳の実践Selenium WebDriverを斜め読みして、イベントリスナー
を定義してページ遷移を捕まえるのがいいのかなって思っていたりしますが、急いで
読んだのでイマイチ自信がありません。

・そんなことできっこないから根本的に考えなおしたほうがいいよ
・そういうときの決まりパターンはこんな感じだよ
・ここに類似した情報あるよ
・それSeleniumじゃなくてこれの方が向いてるよ

などなど、ありましたらご教示いただけると幸いです。

[以上]
--
Naruhiko Ogasawara (nar...@gmail.com)

戸田広

unread,
Nov 3, 2014, 11:31:50 PM11/3/14
to Naruhiko Ogasawara, selen...@googlegroups.com
こんにちは、戸田です。

> ・(可能ならターゲットのWebページを開くところも手動)
> ・問い合わせフォームをFillしてクエリーを発行するところまでは手動
> ・クエリーの結果、遷移したページのDOMツリーを舐めてファイルに落とすのを自動化

Seleniumの範囲でやるなら、3つ目の自動化すべき操作だけSelenium IDEで作って
手動の操作が終わってから、Selenium IDEの実行ボタンを押す、という感じにすると
イメージに近くなりそうです。

ただ、3つ目の操作はSeleniumでなくてもできますし、
「ファイルに落とすのを自動化」あたりが制約があって工夫が必要っぽい気がします。
もしJavaScriptがそこそこ書ければ、Greasemonkeyあたりで実現する方が手っ取り早いでしょう。



2014年11月4日 13:07 Naruhiko Ogasawara <nar...@gmail.com>:
--
Naruhiko Ogasawara (nar...@gmail.com)

--
このメールは Google グループのグループ「日本Seleniumユーザーコミュニティ」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには seleniumjp+...@googlegroups.com にメールを送信してください。
このグループに投稿するには、selen...@googlegroups.com にメールを送信してください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。

Naruhiko Ogasawara

unread,
Nov 4, 2014, 7:33:38 PM11/4/14
to 戸田広, selen...@googlegroups.com
小笠原です。


結論から書くと、割とむりくりな感じですが:

・Driverを上げて about:blank にgoする
・find_elements で結果ページにのみ存在する要素が登場するのを
待ち受けてループ
・要素が登場したら自動操作開始

という感じでいけそうかなと思っています。


> こんにちは、戸田です。

どうも、ありがとうございます。


> Seleniumの範囲でやるなら、3つ目の自動化すべき操作だけSelenium IDEで作って
> 手動の操作が終わってから、Selenium IDEの実行ボタンを押す、という感じにすると
> イメージに近くなりそうです。

あーなるほど。


> 「ファイルに落とすのを自動化」あたりが制約があって工夫が必要っぽい気がします。

ぱっと調べた範囲だと、ちょっとそこで悩んで手が止まっていました。


> もしJavaScriptがそこそこ書ければ、Greasemonkeyあたりで実現する方が手っ取り早いでしょう。

そういう方法もありますね。

今回、いくつかのサイトで作業を行う必要があって、Seleniumがまま
つかえるサイトも存在するのと、チーム内にはRubyプログラマーが
多いので、できればSeleniumのRubyバインディングで統一したいと
いう事情があるのでした(できないのであれば、仕方がないですが)。

Snsk Matsuki

unread,
Nov 4, 2014, 10:09:04 PM11/4/14
to Naruhiko Ogasawara, 戸田広, selen...@googlegroups.com
しんすくともうします。こんにちは。

>・それSeleniumじゃなくてこれの方が向いてるよ

の一案として、

・チーム内にはRubyプログラマーが多い
・問い合わせフォームをFillしてクエリーを発行する (a)
・クエリーの結果、遷移したページのDOMツリーを舐めてファイルに落とす (b)

という条件ですと、MechanizeとNokogiriというGem(Rubyのライブラリ)を利用されるのがもっとも素直な気がします。

Mechanizeで(a)
Nokogiriで(b)

です。

2014年11月5日 9:33 Naruhiko Ogasawara <nar...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Seleniumユーザーコミュニティ」の登録者に送られています。
> このグループから退会し、グループからのメールの配信を停止するには seleniumjp+...@googlegroups.com にメールを送信してください。
> このグループに投稿するには、selen...@googlegroups.com にメールを送信してください。
> その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。



--
shi...@gmail.com - snsk
Reply all
Reply to author
Forward
0 new messages