2014年12月2日火曜日

SDK Managerが起動しない

Androidアプリを開発しているのですが、突然、SDK Managerの起動でエラーが発生して起動に失敗するようになりました。














Android SDKを以下に再インストールしたのですが、SDK Manager.exeをダブルクリックしても同じエラーでやっぱり起動しませんでした。

C:\Users\{ユーザー名}\AppData\Local\Android\sdk

[環境]
Windows 8.1
eclipse Kepler
JDK 1.8.0_05
以下のbatファイルをダブルクリックして、SDK Managerの起動に試みました。

C:\Users\{ユーザー名}\AppData\Local\Android\sdk\tools\android.bat

android.batを起動すると、コマンドプロンプトが以下のエラーを表示しました。

[エラー]
java.lang.NullPointerException at com.android.sdklib.internal.avd.AvdManager.parseAvdInfo(AvdManager.java:1513)
at com.android.sdklib.internal.avd.AvdManager.buildAvdList(AvdManager.java:1492)
at com.android.sdklib.internal.avd.AvdManager.(AvdManager.java:346)
at com.android.sdklib.internal.avd.AvdManager.getInstance(AvdManager.java:369)
at com.android.sdklib.internal.repository.updater.UpdaterData.initSdk(UpdaterData.java:252)
at com.android.sdklib.internal.repository.updater.UpdaterData.(UpdaterData.java:120)
at com.android.sdkuilib.internal.repository.SwtUpdaterData.(SwtUpdaterData.java:61)
at com.android.sdkuilib.internal.repository.ui.SdkUpdaterWindowImpl2
(SdkUpdaterWindowImpl2.java:104)
at com.android.sdkuilib.repository.SdkUpdaterWindow.(SdkUpdaterWindow.java:88)
at com.android.sdkmanager.Main.showSdkManagerWindow(Main.java:407)
at com.android.sdkmanager.Main.doAction(Main.java:390)
at com.android.sdkmanager.Main.run(Main.java:150)
at com.android.sdkmanager.Main.main(Main.java:116)

どうやら、parseAvdInfo で死んでいるようで、以下のフォルダを削除して無事起動することが出来ました。また、SDK Managerの起動後、以下のフォルダが再作成できたことも確認しました。 

C:\Users\{ユーザー名}\.android

2013年10月28日月曜日

【Selenium-VBA】SeleniumでTableの行数を取得

先週から引き続き、Selenium-VBAで自動データ投入ツールを作成中で、今回は画面上のテーブルから行数を取得するというシナリオを作成しました。今回も備忘録として記載する。

コードの内容としてはそれぞれの行をWebElementオブジェクトの配列で取得して、配列の個数から行数を取得した。

【実際に作成したコード】
Dim selenium As New SeleniumWrapper.WebDriver
Dim vRows As Variant
vRows = selenium.findElementByXPath("テーブル本体部(tbody)までのパス").findElementsByTagName("tr")

【参考URL】
http://jigsaw.hatenablog.jp/entry/2013/08/12/225148

2013年10月27日日曜日

【Selenium-VBA】プルダウンからラベルで選択する

GUIインターフェースを持つアプリケーションであれば、ドロップダウンから特定のオプションを選ぶことはよくある。

先日、「Selenium-VBA」で事前に作成したExcelからデータを自動入力するツールを作成したが、シナリオの中にドロップダウンから特定のオプションを選ぶというステップがあって、今まではプルダウンの上から何番目の位置かで指定(Sendkeyで指定)していたが、テスト環境と本番環境で位置が異なるというので、確実に指定したオプションを選ぶためにラベルで選択する方法を調べたので、備忘録のために記載する。(方法は他にも沢山あるかもしれないが・・・。)


【実際に作成したコード】
Dim selenium As New SeleniumWrapper.WebDriver
selenium.selectAndWait "xpath=ドロップダウンのパス", "label=選択したラベル"



【参考URL】

2013年10月13日日曜日

【Webブラウザ】クッキーの確認方法

開発者としては常識なのかもしれませんが、今日はIEとFirefoxでクッキーを確認する方法を調べたので、忘れないように備忘録として残すことにしました。

【IE】
「ツール」→「開発者ツール」をクリック。開発者ツールの「キャッシュ」→「Cookie情報を表示する」を選ぶと、別タブでCookie情報が現れる。Temporary Internet Files\Content.IE5\Coo8471.xmlのようなファイルを開いているだけのようだが、ページを更新するたびにファイル名が変わるので、同じファイルを読み直しても情報を更新しない。

【Firefox】
「ツール」→「オプション」をクリック。表示したオプション画面の「プライバシー」タブ→「履歴」グループ→「Cookieを表示」ボタンをクリックすると、クッキーを確認できる。

2013年10月12日土曜日

【Webブラウザ】Firefox以外でもFirebugが使用可能!?

今週火曜日から作成し始めたツールがやっと完成しましたが、今回もなかなか技術的困難がありました。今回はIEでしか動作しないシステムの画面操作を自動実行するツールをまたもやSeleniumで作ったのですが、IEでしか動作しないということで、いつもSeleniumを使う際に利用するSelenium IDEが使用できないという壁にぶつかりました。

いつもはFirebugでXPATHから要素を特定しながら、Selenium IDEでコマンドを作成していたのですが、どちらも使用できないということでいろいろ調べました。Selenium IDEについてはコマンドだけなので、大して不便ではなかったのですが、Firebugが使用できないのは面倒くさいと思いました。

しかし、調べた結果、FirebugをFirefox以外のブラウザでも使用できることが判明しました。

Firebug Lite

Firebug LiteはIE6以上、Firefox、Opera、Safari 、Google Chromeなどほとんどのブラウザで利用可能で、Firebugと比較すると機能が限定的では十分利用できるのではないでしょうか。ちなみにFirebug Liteはブックマークレットとして提供。ブックマークレットとはサイト上で任意のJavaScriptを実行する機能。

利用方法としては・・・
①以下のURLにアクセスして、画面中央部にある「Debug bookmarklet」の「Firebug Lite debug」というリンクを右クリックしてお気に入りに追加。
検証するサイトに移動してお気に入りから「Firebug Lite debug」をクリック。
実行するとFirebugのコンソールパネルが起動して検証できるようになる。
Google Chromeではブックマークレットだけでなくエクステンションとしても提供

しかし、Firebug Liteには要素のXPATHを取得する機能がないようで、今回は使用できませんでした。代替方法として、IEの開発者ツール(F12)で取得したHTMLをFirefoxで表示してFirebugから要素をXPATHで取得しました。

2013年10月8日火曜日

【Selenium】IEをSeleniumで起動してエラー

今日からまた新たなツール作りが始まりました。新たなツールとはIEの画面操作を自動的に実行するツールで、Excelに入力したデータをもとに登録・更新・削除するツールを作ることになりました。ツールは「Selenium」で作成することにして、Excelとの連携も必要なので、SeleniumをWrapperした「Selenium VBA」を使うことにしました。

早速、Selenium IDEで作成・変換したVBAのコードを実行すると、「Protected Mode must be set to the same value (enabled or disabled) for all zones.」というエラーが発生。

エラーについて調べると、IEのインターネットオプションのセキュリティ設定で全てのゾーンの保護モードを同じように設定しなければならないようで、SeleniumのWikiにもInternetExplorerDirverのページのRequired Configurationに記述がありました。記述のように変更して再度実行すると、IEがちゃんと起動しました。

【Required Configurationから抜粋】
On IE 7 or higher on Windows Vista or Windows 7, you must set the Protected Mode settings for each zone to be the same value. The value can be on or off, as long as it is the same for every zone. To set the Protected Mode settings, choose "Internet Options..." from the Tools menu, and click on the Security tab. For each zone, there will be a check box at the bottom of the tab labeled "Enable Protected Mode".


【参考URL】
http://code.google.com/p/selenium/wiki/InternetExplorerDriver#Required_Configuration
https://code.google.com/p/selenium/issues/detail?id=1795#c19

2013年10月2日水曜日

【Windows】「起動時刻」、「終了時刻」などの操作履歴を調べる

毎月月初に派遣元の会社に提出する勤務時間を今まで毎営業日Excelの表に記載していたのですが、私はあまりマメな人間ではないので1週間で挫折しました。

何か自動で記録する術はないかと思案したのですが、作るのも面倒なので、もしかすると、Windowsの起動ログがあるかもしれないと考え調べた結果、やっぱりありました。いちいち毎日出勤・退社時間を確認して転記していたのが馬鹿馬鹿しくなりました。今後は毎月月初にまとめてWindowsのログから一気に転記することにします(今度はちゃんと毎日PCをシャットダウンしなければならなくなるのですが・・・)。

【Windows7のログ取得】
①スタートメニューの「コンピュータ」を右クリック。またはスタート⇒コントロールパネル⇒管理ツール⇒イベントビューアー

②「管理」をクリックすると、「コンピュータの管理」が開けます。

③画面左部の一覧(コンソールツリー)に「イベントビューアー」があるので、先頭の小さな「△」をクリック。

④「Windows ログ」があるので、③と同様に先頭の小さな「△」をクリック。

⑤「システム」をクリックすると、「レベル」「日付と時刻」「ソース」「イベントID」の一覧を表示。

⑥「イベントID」で、操作の履歴を確認。画面右部の「現在のログをフィルター」でフィルタリングすると、分かり易い。
6005 「起動」
6006 「正常シャットダウン」
6008 「正常にシャットダウンせずに終了」
6009 「起動の度のブート情報書き込み」