Hatena::Groupadmire

開発ネタ物置 このページをアンテナに追加 RSSフィード

2009-03-08

[][][]Zend Framework 1.5.7 怠惰な導入まとめ 17:52 Zend Framework 1.5.7 怠惰な導入まとめ - 開発ネタ物置 を含むブックマーク

導入前の設定

Zend Frameworkの導入方法」以降を参照(.htaccess 作成まで)

http://www.ibm.com/developerworks/jp/opensource/library/itm-zend1/

※ ただし、windowsデフォルトでは.htaccessを使えないっぽい?

http://www.ponko2.com/win_htaccess.html


これだけファイルをつくればいいと思う

/(ルート

 /html

    .htaccess

    index.php

 /app/controllers

    IndexController.php

    ErrorController.php

 /app/views/scripts/index

    index.phtml

index.php

<?php
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('../app/controllers');
?>

IndexController.php

<?php
/** Zend_Controller_Action */
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Controller_Action');

class IndexController extends Zend_Controller_Action
{
	public function indexAction()
	{
		$this->view->assign('val1', "テスト。");
	}
}
?>

Index.phtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>test</title>
</head>
<body>
<p>
<?php echo $this->escape($this->val1); ?>
</p>
</body>
</html>

ErrorController.php

<?php
Zend_Loader::loadClass('Zend_Controller_Action');
class ErrorController extends Zend_Controller_Action {
	/**
	* エラー処理
	* @return void
	*/
	public function errorAction() {
		// 自動レンダリングしない(=viewを作らない)
		$this->_helper->viewRenderer->setNoRender(true);

		// 直接出力(若干手抜き)
		print "<p>error</p>\n";
		print "<ul>\n";
		$errors = $this->getResponse()->getException();
		foreach($errors as $error) {
			print '<li>' . $error->getMessage() . '</li>';
		}
		print "</ul>\n";

	}
}
?>

ここまで出来たら

ブラウザで以下のURLアクセス

http://ホスト)/index/


他のviewを使ってみたい

IndexController クラスに追加

	public function anotherviewAction()
	{
		$this->view->assign('val1', "indexのviewを使ってみるテスト");
		$this->render('index');
	}

参考文献

Zend Frameworkなまはげ カンタービレ

http://pluto-blog.blog.so-net.ne.jp/archive/c15251-1

PHPの種 ブログ Zend FrameworkのViewRenderer使用時に自動レンダリングしない

http://www.php-seed.net/blog/archives/42

rlcrilqthyrlcrilqthy2013/07/28 22:43uelxgbenjsf, <a href="http://www.knyfsvvkdd.com/">bmvidlfymp</a> , [url=http://www.ogyvfhzitd.com/]zcximjxjwy[/url], http://www.gdczynmfyc.com/ bmvidlfymp

kzyhblkudrkzyhblkudr2013/07/31 04:19zxlcvbenjsf, <a href="http://www.mbehyjegny.com/">fbummjzdnu</a> , [url=http://www.qonzsgauaj.com/]cyvrdihxto[/url], http://www.jgrgcyxggn.com/ fbummjzdnu

knqvkkuoqcknqvkkuoqc2013/11/24 03:29zauzgbenjsf, <a href="http://www.ojqiplttmt.com/">aqqvabcije</a> , [url=http://www.hdmavgtald.com/]rwjsrfyosa[/url], http://www.pdyauupxrj.com/ aqqvabcije

2008-07-04

[][][]Selenium RC導入のまとめ その3 18:20 Selenium RC導入のまとめ その3 - 開発ネタ物置 を含むブックマーク

さらに追加条件

  1. FireFoxでもテストしてみたい(IDEも使いたい)
  2. テキストエリアに入力できないんだけど

FireFox対応

というほどのこともしてないし。IDEのインストールくらいか。こちらから。

http://selenium-ide.openqa.org/download.jsp

IEとFireFoxでの挙動自体の違いは、よくわかりません。
#むしろ対象システムの微妙な違いが;;*1

対応内容というか注意事項というかメモ。

  • Selenium RCを起動する前に、プロキシの設定で localhost:4444 (デフォルト指定時)を指定すること
  • オプションに "*firefox" で上手く動かない場合は "*custom C:\\Program Files\\Mozilla Firefox\\firefox.exe"*2 を指定してみる
  • SeleniumIDEはShift-JISでのテストケースファイルは読み込めない(当然か)
  • UTF-8でのテストケースファイルではヘッダでcontent-typeを指定しなければ、Selenium RC+IEで化ける?(webサーバとの絡みもあるので一概に言えないが)
    例のHTMLファイルを単純にUTF-8に変換するだけでは×。IDEで吐き出したHTMLヘッダを追加してOKに。
  • つーか、Selenium RC+FireFox、デラはえー。
  • 処理速度の差による微妙な挙動の違いはあるかも。この辺はコマンドで調整
    #「早すぎて画面遷移が追いついてないよ」とか「タイムアウトになっちまったorz」とか。pauseとsetTimeoutを駆使して調整かつトライアンドエラー

テキストエリアに入力できないんだけど

textareaタグなら普通にIDEで記録できるのに、と思ったらどうも記録すらできない。

typeコマンドでも撃沈。

どうもopenWYSIWYGを使用しているせいらしい?

http://www.openwebware.com/

仕方がないので?JavaScriptでWYSIWYGオブジェクトを直接叩く。

<tr>
	<td>getEval</td>
	<td>
		wysiwygObj = this.page().getCurrentWindow().WYSIWYG;
		doc = wysiwygObj.getEditorWindow( '(テキストエリアのID)' ).document;
		doc.open();
		doc.write( '(入力したい文字列)' );
		doc.close();
	</td>
	<td></td>
</tr>

参考:SeleniumでJavaScriptを使う方法いろいろ(変数・関数などの利用)

http://colo-ri.jp/develop/2008/04/seleniumjavascript.html


でも、他にもっといいやり方があると思う。

*1:まあそれは織り込み済みなんで(実はIE上であまりにも遅い+HTMLで書くのはさすがに大変、という話をしたら「なんでIDE使わないの?」なんて流れに)

*2:要はFirefoxのパスを指定

epjxiekubgepjxiekubg2014/03/19 22:44uwaqwbenjsf, <a href="http://www.dazfdqvanx.com/">vkrzdbncrg</a> , [url=http://www.biymcgqfpo.com/]ybawfvdtph[/url], http://www.renwrrrztv.com/ vkrzdbncrg

2008-07-02

[][][]Selenium RC導入のまとめ その2 12:04 Selenium RC導入のまとめ その2 - 開発ネタ物置 を含むブックマーク

追加条件

  1. ウインドウでの処理(例:ログイン画面の次がもう別ウインドウ
  2. 処理後にIE勝手に終了するの、何とかならない?

ウインドウでの処理

waitForPopUp→selectWindowで対応

-      <tr><td>clickAndWait</td><td>id=(ログインボタンのID)</td><td></td></tr>

+      <tr><td>click</td><td>id=(ログインボタンのID)</td><td></td></tr>
+      <tr><td>waitForPopUp</td><td>(次画面のウインドウID)</td><td>30000</td></tr>
+      <tr><td>selectWindow</td><td>(次画面のウインドウID)</td><td></td></tr>

参考:Selenium 0.7 Reference (Japanese)

メモ
追記

時々 waitForPopUpで「書き込みできません。」エラーになる(ウインドウを開くタイミングの問題らしい?)。その場合は、waitForPopUpの前にpauseコマンド(または後述のブレイクポイント)で待ちを作ってあげるとよさげ。

参考: Selenium Command Reference ja http://wiki.openqa.org/display/SEL/Command+Reference+ja

#なんで0.7のReferenceにはpauseコマンドが載っていないんだろう?

IE勝手に終了」対応

参考:assertEvalの活用方法(ブレイクポイント、終了通知) http://d.hatena.ne.jp/onozaty/20070103/p1

これは便利。

対応した機能を追加

Test01.html を修正

<html>
<head><title>Test 01</title></head>
<body>
  <table cellpadding="1" cellspacing="1" border="1">
    <tbody>
      <tr><td><b>Test 01</b></td></tr>
      <tr><td>open</td><td>(トップページのURL)</td><td></td></tr>
      <tr><td>type</td><td>id</td><td>(ID)</td></tr>
      <tr><td>type</td><td>password</td><td>(パスワード)</td></tr>
      <tr><td>click</td><td>id=(ログインボタンのID)</td><td></td></tr>
      <tr><td>pause</td><td>1000</td><td></td></tr>
      <tr><td>waitForPopUp</td><td>(次画面のウインドウID)</td><td>30000</td></tr>
      <tr><td>selectWindow</td><td>(次画面のウインドウID)</td><td></td></tr>
      <tr><td>verifyTitle</td><td>(次画面のタイトル)</td><td></td></tr>
      <tr><td>assertEval</td><td>alert('終了します。');true;</td><td>true</td></tr>
    </tbody>
  </table>
</body>
</html>

2008-07-01

[][][]Selenium RC導入のまとめ その1 17:45 Selenium RC導入のまとめ その1 - 開発ネタ物置 を含むブックマーク

前提条件

インストール

JREバージョンを確認
C:\>java -version
java version "1.6.0_05"
Java(TM) SE Runtime Environment (build 1.6.0_05-b13)
Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode, sharing)

1.5.0以上ならOK。でなければこの辺からインストール

http://java.sun.com/javase/ja/6/webnotes/install/jre/install-windows.html

Selenium RCダウンロード

http://selenium-rc.openqa.org/

(今回は1.0 beta-1を使用

解凍して、サーバフォルダ適当フォルダに移動

例:selenium-server-1.0-beta-1 を c:\selenium\server\ へ

Selenium RCの起動テスト

cmd.exeを起動し、コマンドプロンプトを表示

C:\>cd c:\selenium\server\
C:\selenium\server\>java -jar selenium-server.jar -interactive
(起動待ち)
C:\selenium\server\>cmd=getNewBrowserSession&1=*iexplore&2=(テスト対象サーバのURL)

テスト対象サーバURL : 対象URLhttp://b.hatena.ne.jp/hotentry のときは http://b.hatena.ne.jp/ と指定)

IEが起動して、エラー表示がなければOK。ctrl+cで終了

テストHTMLの作成

* 制御用(?)HTMLファイルと実行HTMLファイルを別々に作成しないと動作しない模様*1

c:\selenium\testcase\ 以下に作成

制御用HTMLファイル作成

TestSuite.html

<html>
<head><title>Test Suite</title></head>
<body>
  <table cellpadding="1" cellspacing="1" border="1">
    <tbody>
      <tr><td><b>Test Suite</b></td></tr>
      <tr><td><a href="./Test01.html">Test01</a></td></tr>
    </tbody>
  </table>
</body>
</html>
実行用HTMLファイル作成

トップページからログインし、次画面に遷移するかまで)

Test01.html

<html>
<head><title>Test 01</title></head>
<body>
  <table cellpadding="1" cellspacing="1" border="1">
    <tbody>
      <tr><td><b>Test 01</b></td></tr>
      <tr><td>open</td><td>(トップページのURL)</td><td></td></tr>
      <tr><td>type</td><td>id</td><td>(ID)</td></tr>
      <tr><td>type</td><td>password</td><td>(パスワード)</td></tr>
      <tr><td>clickAndWait</td><td>id=(ログインボタンのID)</td><td></td></tr>
      <tr><td>verifyTitle</td><td>(次画面のタイトル)</td><td></td></tr>
    </tbody>
  </table>
</body>
</html>

実行開始

コマンドプロンプトを表示して、テスト開始

C:\selenium\server\>java -jar selenium-server.jar -htmlSuite "*iexplore" "(テスト対象サーバのURL)" "c:\selenium\testcase\TestSuite.html" "c:\selenium\testcase\result.html"

IEが起動して、勝手に処理が実行されて、勝手IEが終了すればOK

result.htmlに処理結果が出力される


参考:

*1:1テストしかしないのにファイル2つ作るのはめんどいお…とも思ったんだけど、IDEでは出来なかった「処理の共通化」「分岐テスト」なんかは簡単に出来そう