Eigemann Tech Blog

名もないエンジニアが色々技術系のことについて書いてみます

Selenium3.0 - sleepを使って画面の読み込みを待たせる方法

こんにちはEigemannです。

 

Selenium3.0でテストケースを作りだして早くも問題だらけでなかなか苦戦中です。以前はFirefoxIDEで全部作業録画してテストケース作っていたので現在のjavaでclassを書く方法にしてからなにやら色々以前からのノウハウが足りない。

 

elementをidで指定しているのですが何故か認識してくれない。ちなみに作業環境はEclipseです。全然原因が不明だなあと思ったらここは以前からSeleniumの経験から画面の読み込みが間に合っていなくてエラーになってるんじゃないかな?と予測。3.0にもなったらこういうのは必要ないかと思ったそうでもなかった。

 

画面が切り替わったら

try{

       Thread.sleep(5000);  //5000ミリ秒Sleepする

  }catch(InterruptedException e){}

 を挿入した。これで画面遷移後に読み込みを待つ時間が出来る。

 

読み込みが終わってからelementを認識できるようになるので無事テストが最後まで進むようになった。

 

今回のまとめ

多少は以前からSelenium触ってたのが今回は役に立った。まだまだわからないことは多くドキュメントは少ないので色々読んでテストケース作成中で、わからなくて詰まったが解決したことはここに書き残していこうと思う。

Selenium3.0 - Geckodriverを使ってFirefoxを起動する方法

こんにちはEigemannです。

 

Selenium3.0 がリリースされていたのに今頃気づいてようやく試しに使ってみました。Eclipseをインストールして公式のサンプルをコピーしてきて実行。しかしexceptionエラー。

java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/geckodriver. The latest version can be downloaded from https://github.com/mozilla/geckodriver/releases at com.google.common.base.Preconditions.checkState(Preconditions.java:199) at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:109) at org.openqa.selenium.firefox.GeckoDriverService.access$100(GeckoDriverService.java:38) at org.openqa.selenium.firefox.GeckoDriverService$Builder.findDefaultExecutable(GeckoDriverService.java:91) at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:296) at org.openqa.selenium.firefox.FirefoxDriver.createCommandExecutor(FirefoxDriver.java:245) at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:220) at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:215) at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:211) at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:124)

 

Geckodriverが必要と書いてあります。日本語の他のドキュメントには書いてなかったけどおかしいなと思ったらバージョン2.53より下のものは必要なかったみたいです。3.0.1なので必要になったみたい。

 

早速ここからGeckodriverをダウンロード。Windowsマシンだったので.exeファイルが解凍したらでてきて少し?となりました。これインストーラーでもないのになんだろと。

 

System.setProperty("webdriver.gecko.driver", driverPath+"geckodriver.exe");

public WebDriver driver;

 

System.setPropertyをpublic WebDriver driver;の前に追加すればよかったのですね。.exeファイルはここでファイルへのパスと合わせて表記すればOKでした。Windowsなので思わず"/"を使ってしまいましたが、eclipseではエラーになるので"\"でパスを表記するのをお忘れなく。

 

今回のまとめ 

無事selenium3.0でfirefoxのテストケースサンプルが動いて自動的にfirefoxが立ち上がり検索を行いました。ちょっとしたエラーで詰まって結構唸っていたので記録がてらエントリーを書いておきました。さてこの次はテストケースを作成しないといけないなあ。

 

 

UNITY初心者が戦車ゲームつくってみる Part1

こんにちはEigemannです。

 

XcodeiOSアプリ作っていたのですがもうちょっと色々ゲーム作ってみたくなったのでUNITYをダウンロードしてみました。有名なuinyanさんのUNITYの記事を以前読んでたので久しぶりに読み返したら戦車ゲーム作りたくなった。

 

f:id:Eigemann:20140801152216p:plain

ここに来るまで色々作業必要だけど周りに枠を作って戦車を配置してこんな感じ。戦車はscale弄ってわざとデカくしてる。このasset storeで無料で手に入るII号戦車すごいよくできてる。カッコイイ。なので大きくしてみました。

 

戦車カッコイイから動かさないと

これだけカッコイイなら画面を走り回る姿が見たい。なので色々操作用のスクリプト探すけど何故かエラーにばかりなる。

 using UnityEngine;
using System.Collections;

public class Controler : MonoBehaviour {

 //3D Vectorの宣言
    public Vector3 targetDirection;

    // Use this for initialization
    void Start () {
    }
    
    // Update is called once per frame
    void Update () {
        

  //X軸、Y軸,  Z軸を設定
        targetDirection = new Vector3(Input.GetAxis("Horizontal"), 0Input.GetAxis("Vertical"));
        

        if (targetDirection.magnitude > 0.1) {

   //方向転換した時、車体の向きを変えて進むように設定 
            transform.rotation = Quaternion.LookRotation(targetDirection);

   //戦車の進むスピード。少しノロいけど戦車っぽい
            transform.Translate(Vector3.forward * 0.5f);
        }
    }
}

 今回はC#で操作のスクリプトを書いてみました。これはなんとかうまくいって戦車動くようになった。ちょっとテンション上がった。projectにあるこのC#スクリプトを戦車オブジェクトのInspectorにドラッグすればOK。

 

今回のまとめ

いきなり戦車動かすところまですっ飛ばした。その前にやることは色々多い。しかしネットにUNITYの情報は豊富。自分が書くよりよっぽど丁寧に説明されてるサイトがいくらでもある。UNITY初心者の自分でもブロック崩しはすぐ作れた。UNITY自体が非常によく出来てる。戦車動いたら次は当然砲弾撃たないと。といってもこのII号戦車は史実ではデカイ主砲はついてない。速射砲なのでバリバリマシンガンみたいに弾出すように作る。

とりあえずgitについて学習し始めた

こんにちはEigemannです。

 

開発に転向したいなと日々思っていましたが今日読んだエントリーが大変おもしろかったです。”運用エンジニアから開発エンジニアになるためにやったこと”というブログ記事。運用エンジニアなら結構すぐ開発に移行できるんじゃないのか?とか思っていたけど意外にそうでもないのですね。

 

自分も開発エンジニアではなかったのでこれは相当な覚悟が必要と思い知らされた感じ。”「いつ来るか分からない15分のために常に準備をしているのがプロ」”というのが金もらって仕事してるプロフェッショナリズムをよく表してますね。雇ってもらってから勉強しながら頑張りますとか新卒ではないので許されることではないですよね。

 

色々ハッとさせられたけど、じゃまずなにができるのか?と考えた。アプリが作りたいならアプリをスクラッチから自作しよう。あとgitについての知識がない。subversionは以前の会社でつかってたがまた結構違うものだと知らされた。試してみたのはこのサイト。ゲーム感覚でgitを学習できた。githubにもアカウント作った。よくわかってないけどなんか作ったものはgithubに上げていこう。

 

まだまだ「いつくるかわからない15分」に対する準備ができてない。また開発だけではまったくもって不十分なので自分が今までやってきたことのスキルも錆びないようにしないと。

Appleが新言語swiftを発表

こんにちはEigemannです。

 

Appleが新言語swiftを発表しましたね。昨晩がWWDCって直前になって気づいたので昨日の記事では”次のバージョン出たら色々変わっちゃうんだろうな”とか書いてたらバージョンどころかObjective-Cに変わる言語swiftが発表されて急展開。

 

まだObjective-Cに慣れ親しんでなかったのでよかったのかも。とりあえずAppleのswiftについてのドキュメントを読んでいます。今後はこっちがメインになりそうだからなにか作ってみないと。まずXcodeを6にバージョンアップしないとと思ったらまだベータ版。ちょっと様子見。

 

やっぱり技術の変化は早い。ついていくのは結構大変。気苦労も絶えないけど新しいものに対してワクワクすることは絶えないので楽しんでいけばいいのではないかと。

XcodeでiOSアプリ作成を学習中

こんにちはEigemanです。

 

毎日更新する目標で始めたこのブログだったけどまるで更新してなかった。毎日更新ってかなりの継続力と労力だと思う。

 

XcodeiOSアプリ作成を学習中

以前からiOSアプリを作りたいと思っていて独学でXcodeを弄ったりググってサンプル見たりしていたがある一定のレベルからそれ以上複雑なアプリを作ろうとするとよくわからなくなった。

 

例えばじゃんけん、おみくじ、BMI測定みたいなアプリは作れたけど簡単なECサイトを作ろうとすると会員登録、ログイン、カートに商品入れるみたいな機能の実装が必要。しかしいざ書いてみると全体として機能しない。機能するプログラムが書けない。

 

現場で通用する力を身につける iPhoneアプリ開発の教科書 【iOS 7&Xcode 5対応】 (教科書シリーズ)

現場で通用する力を身につける iPhoneアプリ開発の教科書 【iOS 7&Xcode 5対応】 (教科書シリーズ)

 

 アプリエンジニアの知人から薦められたのはこの本。色とか絵がポップでとっつきやすい。実際読みやすいのでサラサラ読み進めれた。まだ読んでる途中だけど実際の作成時にリファレンスとして読み返すことになりそう。読んでるだけではなんとも知ってることとか知らないこともあるけどどういう場面で使うかまだ想像できない。

 

iPhoneアプリとかXcode本の問題は新しいiOSとかXcodeのバージョンが出たらもう古い本になるってとこだなあ。結構スパンも短いし。

ありきたりですが、ドキュメント書いてますか?

こんにちはEigemannです。

 

しがないウェブのエンジニアやってます。技術も高くないですがなんとかこの業界での年月も長くなってきたので(正直なんかもうつかかれた。プラモ屋でも始めたい)少し技術について書いてみようと思います

 

ドキュメント書いていますか? 

書いている現場であればいいですね。書かないのは多分「書く時間なんかねーよ!」「書いたとしてそれ誰か読むの?」「どうせ誰も読まないでしょ」等の考え方しているのではないですかね?

 

自分はウェブサイトのテストをやったりするのですが仕様書でも決め事でも文書化されてたら読みます。でないと何が何だか分からないのにポンと「開発完了したので確認願います。」と案件渡されてポカーンとなることが頻繁にあるからです。バグの錬金術士とでも思われているのだろうか?仕様がどうなってるのかもわからずにテストも何も実施しようがないのだが。

 

しかしながら流石にパワポとか作ってしっかりしたドキュメントを毎度作製するのはかなりの手間。これは自分もそう思う。時間にそれだけ余裕があるプロジェクトならいいのだけれど、ウェブ系の大半は短期間のものだと思う。そうなるといちいち文書に書きおこしていられない。しかしそれでは開発全体が詳細把握できないという悪循環に陥りがち。

 

最近試しているのが(別に新しい手法ではないけど)、redmine,JIRA等の開発の管理サイトにIRCチャットとかで決まっちゃったような決め事や仕様をコピーして文書に貼り付けるやり方。書く手間はそんなにかからないし決め事は記録として残るので後で振り返って確認もできる。

 

これだけで開発が劇的に楽にはならないけど小さい作業のわりには効果あると思う。ドキュメント作る習慣がつくようにもなればいいのでは。文書として残すと今読まなくてもナレッジベースとして蓄積されていくし。


短いエントリーにしようとしたけど意外と長くなってしまった。今後もこれくらいの小ネタばかり書いていこうと思っています。よろしくお願いします。