Selenium1.0b2でXPCNativeWrapperによるテストエラー
これまで動いていたテストコードがSelenium1.0b2で動かない…大問題発生!? という事態が起こっています。
私もSelenium IDEのアドオンのアップデートで経験したのですが、OpenQAのほうでもCan not call javascript functions from browserbot anymoreというバグ報告がなされていました。
問題になる記述方法
これまで記述されていたほとんどのシチュエーションでエラーが起こります。
たとえば、普通にテストページのwindowオブジェクトを取得しようとした場合に以下のようにすると思いますが…
このように、すでにXPCNativeWrapperによってラップされているために、独自に追加したプロパティやメソッドにアクセスすることができません。
XPCNativeWrapperってなんだ?
mozilla developer center の、XPCNativeWrapperのところにそのものズバリの解説ページがあるのですが、要するにFirefoxが持っている機能で「よく分からないコードを勝手に追加・実行されないようにするために本来のオブジェクトをラッピングしてガードするもの」のようです。 なぜ、これがSeleniumに組み込まれているのかは謎ですが…
回避するにはどうするか?
ともかく、このやっかいな問題ですが、解決方法はありませんが回避方法はあります。 それは、対象のXPCNativeWrapperによってラップされたオブジェクト内のwrappedJSObject変数にアクセスして本来のオブジェクトを取り出す方法です。
こうすれば、とりあえず生のwindowオブジェクトを取り出すことができます。 でも早く次のバージョンで解決してほしいものですね…
2008-07-28