Selenium

さて、久しぶりにブラウザの自動操作について調べてみる。
2008年当時は、Google Chromeはリリースされたばかり(2008年9月2日)で、
IEは、Windows7も発売前なのでIE8もなくIE7が最新、
Firefoxは、バージョンは3.0(現在は45)という時代だった。
当然ながらIEが主流だったし、ブラウザの自動操作を行うのもIE以外は考えられなかった。
なんで、VBやVCを使ってDLLの中身を解析しながらプログラムしていたのが、懐かしい。

で、今や便利な世の中になったものでブラウザの自動操作をするのにSeleniumという
ツール(フレームワーク)が登場した。
元々は、ブラウザを使ったWebアプリケーションの開発で、
ブラウザ操作のテストを自動化するために、作られたフレームワーク。
人が手でブラウザを操作する代わりにSeleniumがブラウザを操作してくれる。

当時からSeleniumがあれば、数年前に作ってたブラウザ自動操作アプリが
もっと簡単に作れたのに・・・。
嘆いても、しょうがないので、さっそく使ってプログラムを作ってみます。

まずは、こちらからSeleniumをダウンロード。
プログラム言語は、Java, C#, Ruby, Python, Javascriptからお好きなものを選べます。
今回は、Javaでプログラミングしてみます。

そして、インストールと開発環境の設定。今回はJavaということで、Eclipseを使用。
こちらのサイトを参考にしました。

楽天スーパーサーチで自動検索して、山分けポイントをGetするプログラムを作ってみます。
ブラウザはFirefoxを対象にしました。

package rakuten.search;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class UseDriver {

	// ログインURL
	static final String URL = "https://websearch.rakuten.co.jp/login.html";
	// ログインユーザID
	static final String USER_ID = "xxxxxxxxxx"; // TODO 変更
	// ログインパスワード
	static final String PASSWORD = "xxxxxxxxxx";  // TODO 変更

	// ドライバ
	static WebDriver driver = null;

	// 検索するワード
	static String[] keywords = {
			"Google",
			"Firefox",
			"Facebook",
			"Twitter",
			"Line"
	};
	
	public static void main(String[] args) {
		// Firefoxのドライバを生成
		driver = new FirefoxDriver();

		try {
			// ログイン
			driver.get(URL);
			WebElement userId = driver.findElement(By.name("u"));
			userId.sendKeys(USER_ID);
			WebElement passwd = driver.findElement(By.name("p"));
			passwd.sendKeys(PASSWORD);
			passwd.submit();
		} catch (Exception e) {
			return;
		}
		
		// 全ワード検索を行う。
		int i = 0;
		while(i < keywords.length) {
			if (search(i)) {
				i++;
			} 
		}
		driver.quit();
	}
	
	private static boolean search(int i) {
		String key = keywords[i];
		try {
			// ページがロードされ終わるまで待つ。
			// 1秒のタイムアウトを設定。
			Thread.sleep(1000);

			// 検索ワードのテキストボックスを取得。
			WebElement search = driver.findElement(By.name("qt"));
			// 検索する単語を入力。
			search.clear();
			search.sendKeys(key);
			// フォームをサブミット。
			search.submit();
			return true;
		} catch (Exception e) {
			return false;
		}
	}
}

1秒以内に、検索結果が表示されないと次の単語の検索が失敗しますが、
検索結果が表示されるまで、再試行をするようになっています。
このプログラムを動かせば、5口ゲットです。
楽天ツールバーをインストールしていれば、30口まで検索できるはず
なのですが、残念ながら生成したドライバのウィンドウには楽天ツールバーが
表示されないので、5口までとなります。

30口検索するなら、iMacrosというFirefoxのアドオンが便利です。
使い方は、別の機会に。

トラックバック(0)

このエントリーのトラックバックURL:
http://shiyu-co.jp/cgi/mt/mt-tb.cgi/19/trackback/xxxxxxxx

CAPTCHA
トラックバックスパム防止のため、末尾の xxxxxxxx 部分を上記画像の数字に置き換えてからご利用ください。

コメントする

プロフィール

よっしー
  
  
フリーでSEをやっています。よろしくお願いします。

2016年4月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30