Tag Archives: JavaScript

Gmail issue with Better Gmail

突然、GmailがContact Creation Failedというメッセージボックスが表示されてログオン画面に戻ってしまい、inboxがロードできなくなってしまう現象に遭遇。 単にGmailサービスが一時的に使えなくなっているだけかと思って少し経ってから試しても現象が変わらず、他のアカウントで試してみるとなぜか正常にロードできるので、不審に思いググッて見ると、どうもBetter Gmailの一部のスクリプトが急に動作しなくなったことが判明。 http://groups.google.com/group/Gmail-Problem-solving/browse_thread/thread/de2393d1eb18f421/b2d42a2d3dcc36f9 Better GmailのSidebarタブのSaved Searches (contact)というのを無効にすると再度OKになりました。Saved Searches (cookie)の方は有効のままでも大丈夫です。

Posted in 技術 | Tagged , , , , , , , | Leave a comment

Selenium – target=_blankのLinkへの対処方法

Seleniumを既存のWebサイトのテストへ適用しようとする場合に厄介なことの一つが、target=_blankでブラウザの別ウィンドウを開いてしまうようなリンクをテストしようとする場合があります。現バージョンでは、JavaScriptのOpenコマンドで指定するWindowIDがないとselectWindowコマンドが効かないため、新しく開かれたウィンドウを操作することができません。で、それの回避策として、target=_blankをやめてJavaScriptのopen()コマンドを使うように書き換えるという手が使えない場合の対処方法がOpenQAのフォーラム内の下記のスレッドにありました。 target=_blankのLinkへの対処方法 要は、JavaScriptを使って、現在のドキュメント内のtarget=_blankをtarget=’popup’みたいなウィンドウ名(タイトルではなくWindowID)で開くように動的に書き換えてあげてそれをやはりJavaScriptで新しいウィンドウをそのウィンドウ名で開いてから、目的のリンクをクリックすれば、そのウィンドウ内に開かれるので、先に付けた名前でそのウィンドウが選択可能になるというアイデアです。 SeleniumのHTML形式だと、概ね下記の手順がウィンドウを開いて目的のテストを実行してからウィンドウを閉じるという一連の処理となります。 storeEval javascript{“this.page().findElement(‘link=link on current page’).target=’popup'”} dummy storeEval javascript{“selenium.browserbot.getCurrentWindow().open(”, ‘popup’)”} dummy click link=link on current page selectWindow popup WaitorTitle title of popup page <<– ここに一連のテストが入る –>> storeEval javascript{“this.browserbot.getCurrentWindow().close()”} dummy storeEvalコマンドで指定している変数dummyはダミーの変数で後のコマンドでは使用しません。フォーラムのスレッドの途中で誰かが指摘しているようにウィンドウを閉じるのにはcloseコマンドだとちゃんと動かないことがあるようなので、上記のようにこれもJavaScriptのClose()を呼んでいます。 色々と試してみたのですがリンク先がスタティックなWebページだとこれでうまく動作するようですが、リンク先が更に動的コンテンツだったり、PDFを開いている場合にはうまく行きませんでした(先に開いた空白のウィンドウを無視してやはり別ウィンドウが開かれてしまう)。これは多分ブラウザがそのように処理しているのだと思うのですが、この辺にもtarget=_blankがなかなかなくせない理由の一つなのかも知れません。この辺の動きはIEでもFireFoxでもほぼ同じでした。 確か、selectWindowコマンドでタイトル名を指定しても動作するように次のバージョンではなるようなことも書いてあったので、それも試してみようと思いますが、一応上記回避策も使える場合はありがたいので、この問題に直面した方は試してみてください。

Posted in インターネット, コンピュータ, 技術 | Tagged , , , , , , | Leave a comment

Sending Mail from Script using CDO object

今日は、ちょっとしたことを調べていて、CDOオブジェクトを使ってスクリプトでメール送信するやり方ではまってしまい少し時間を無駄に使ったので、忘れないうちにメモ。 調べたかったのは、CDOでメール送信する際にエンコーディングにiso-2022-jpを指定すると半角カナを全角カナに自動変換するんだったっけという疑問への回答。確か、そうだったはずと思ったんだけど、ググってもはっきり書いてあるサイトがMicrosoftを含めて見つからない。じゃあ、ちょっとスクリプトを書いて試せばはっきりするじゃんと、スクリプトのサンプルぐらいならググってどこかから引っ張ってきてやれば10分ぐらいで試せると思い手を付けたところでドツボにはまる。 大体がそんなに例が豊富ではない。CDOはドキュメント類がやけに少ないので有名なのは知っていたが、こんなにないとは思いもせず、何とか少ないサンプルをつなげたりしながら形になったところで、どうしても1行だけうまくランタイムエラーが取れない。試した環境がXPと2000 Serverだったのだが、両方とも英語版のせいなのか、CDO.TextBodyPartが存在しないと怒られてしまう。Microsoftのリファレンスを見ても動作するはずなのに、何も手がかりはなし。試行錯誤を重ねた上、CDO.BodyPart.Charsetにiso-2022-jpを設定してやることで一応メールは送信できるようになった。でも、なんでこんなことになってしまったのかは、なぞ。どなたか知っている人がいたら教えてください。 ちなみに動作確認に使ったスクリプトはJavaScriptで書いたもので下記のようなもの。適当な名前(例えばjsmail.js等)で保存してcscript jsmail.jsとコマンドライン実行してやるだけのものです。 var CDO = new ActiveXObject( “CDO.Message” ); var f = CDO.Configuration.Fields; var s = “http://schemas.microsoft.com/cdo/configuration/”; f.Item( s + “sendusing” ) = 2; f.Item( s + “languagecode” ) = “iso-2022-jp”; f.Item( s + “smtpserver” ) … Continue reading

Posted in インターネット, コンピュータ, 技術 | Tagged , , , , | Leave a comment