ふとしたことから、次のようなプログラムを見つけました。
JSSh - a TCP/IP JavaScript Shell Server for Mozilla
http://www.croczilla.com/bits_and_pieces/jssh/
https://wiki.mozilla.org/SoftwareTesting:Tools:jsshHowTo
これを Firefox で動かして、telnet でつなぐとそこにJavaScript
のプロンプトが出ているというものです。
------------------------------------------------------------
$ telnet localhost 9997
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Welcome to the Mozilla JavaScript Shell!
> 1+2
3
>
------------------------------------------------------------
JSSh は、上の URL にもあるように、Testing Tool として作られ
たのでしょう。一般向けではありません。ポート番号 9997 へのア
クセス制御は特にないので、動かす時には、他の人がログインでき
ないようなコンピュータで動かす必要はあります。
ブラウザで Web ページを開くならこんな感じです。
------------------------------------------------------------
var w0 = getWindows()[0]
var browser = w0.getBrowser()
browser.loadURI("http://www.example.com/")
------------------------------------------------------------
C++ で書かれているので、OS、CPU ごとにバイナリの機能拡張が必
要です。バイナリは、次のような所にありました。
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
In article <YAS.10Ju...@kirk.is.tsukuba.ac.jp>
y...@is.tsukuba.ac.jp (Yasushi Shinjo) writes:
> C++ で書かれているので、OS、CPU ごとにバイナリの機能拡張が必
> 要です。バイナリは、次のような所にありました。
実行するには、Firefox に機能拡張を入れてさらに、起動時に
-jssh オプションを付ける必要があります。こんな感じ。
$ /Applications/FireFox/Firefox.app/Contents/MacOS/firefox-bin -jssh
安全策としては、十分かなとは思います。
前の記事 <YAS.10Ju...@kirk.is.tsukuba.ac.jp> でJSSh
(JavaScript Shell) の話をしました。この話は、元々はWatir (発
音は、water と同じ)を見つけてそこから出てきたものでした。
Watir は、JavaScript ではなくて、Ruby でテストができるという
ものです。制御できるブラウザとしては、Firefox だけでなくて、
Internet Explore, Safari, Google Chrome もいけます。OS は、
Windows, Linux, MacOSX。
こんな感じで Web ページが開けます。
------------------------------------------------------------
require 'rubygems'
require 'watir'
b = Watir::Browser.new
b.goto("http://www.example.com")
------------------------------------------------------------
goto() とか click() では、wait するみたいなので、それの実行
時間を計測すれば、何かの値は出てくるみたい。
http://wiki.openqa.org/display/WTR/How+to+wait+with+Watir
コードとしては、こんな感じ。
------------------------------------------------------------
start = Time.now
b.goto("http://www.google.co.jp")
stop = Time.now
diff = stop - start
p diff
------------------------------------------------------------
ただ、この値が何を意味するのかは、よく分からないということは
あります。レンダリングが終っているのかとか、ページに埋め込ま
れた JavaScript が実行されたのかどうかとか。