Seeing is believing

いちエンジニアの日々の興味のあるところ、イベント参加記録、学びの共有を取止めなく※このblogは個人の見解であり所属する組織の見解ではありません

Selenium WebDriver超入門

試行錯誤して動作&IEでのキャプチャまで実行できたのが、

以下のコード。

たぶん環境差異ありなので、参考にする際は注意されたし。

 

 

 

    
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.io.FileHandler;
import org.openqa.selenium.remote.DesiredCapabilities;
public class Sample {

	public static void main(String[] args) {
		File file = new File("C:\\oper\\Java\\selenium\\IEDriverServer.exe");
		System.setProperty("webdriver.ie.driver", file.getAbsolutePath());

		//http://stackoverflow.com/questions/12034969/internetexplorerdriver-zoom-level-error
		DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
		caps.setCapability("ignoreZoomSetting", true);
		WebDriver driver = new InternetExplorerDriver(caps);

		driver.get("http://www.google.com");
	    System.out.println("Page title is: " + driver.getTitle());
	    WebElement element = driver.findElement(By.name("q"));
	    element.sendKeys("Cheese!");

	    element.submit();
	    saveScreenshot(driver,new File("C:\\oper\\Java\\selenium\\sample1.png"));
	    driver.quit();
    }

    private static void saveScreenshot(WebDriver driver ,File saveFile){
        try {
            if(driver instanceof TakesScreenshot) {
                File tmpFile =
                    ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
                FileHandler.copy(tmpFile, saveFile);
            }
        } catch(Exception e) {
            throw new RuntimeException(e);
        }
    }

}

IEで操作するところまでできたが、動作がめちゃめちゃ遅い。特に文字入力作業のところ。。これでは、大規模開発テストではかなり心配。。
今後やること
Maven
Junit
・SeleniumIDE→Javaへの動作運用検討
・画面キャプチャ切れてしまうのでは?の確認
・動作早くする余地がないかの確認。


Seleniumメモ

最終的にやりたいこと。

 

JenkinsでテストJob管理

Jenkins→ビルド→Junitテスト→Selenium実行

テストエビデンスとしてSelenium実行結果はJenkinsジョブ結果から履歴参照したい。

Selenium実行の対象ブラウザはIE11としたい。

 

ここでつまずいていること。Seleniumでキャプチャを取るデフォルトのコマンドである、captureEntirePageScreenshotがIEでは使えない。

実際に使ってみても、このブラウザでは使えないよ、エラーが。。

 

色々Webで検索してみると、snapsIEを使う方法が有名のよう。だけど、情報が古い&

インストールが面倒。。

 

ひとまず、captureScreenshotコマンドベースで実施できないか、確認する予定。

これでだめなら、Seleniumの外から動画とったり、、が最終手段か。

jjugナイトセミナークラウドプラットフォーム特集 1

heroku

  • あまり知られていないが、salesforceファミリー(買収済)
  • 違いはコーディングレスか、プログラミング支援か
  • 12factor applicationの考え方を踏襲
  • ローカル環境でも動かすことが可能
  • gitにpushするだけで、シームレスにデプロイまで可能
  • maven gradleの設定ファイルを自動で読み込むアーキテクチャ

AmazonWebService

  • beanstalkがベストプラクティス
  • 中身はec2やs3など、既存サービスの集合体
  • ボンネットを開けられるという表現をしているように、中の透明度は高い
  • lambdaはイベントハンドライメージ。課金安い

JasperReports調査

OSS帳票製品に関する調査

 

もっとも有名な、JasperReports

ただし、中身としては,PDFに関するコアな部分はiTextに委譲しており、

iTextはライセンス上の懸念がある様子。

JasperReportsで帳票出力してみた | Developers.IO

 

ただし、現時点のJasperReportをDLしてきて内容を確認したところ、

まだiTextのバージョンは2.1.7のため、AGPLのものではなかった。

 

一方、iTextのサイトを見ると、

以下のFAQもあり、危険な感じ。。

http://developers.itextpdf.com/question/can-itext-217-or-earlier-be-used-commercially

iTextGitHubを見ても、2系は7 Jul 2009     の2.1.7 で終わっており、

その後は5系のみ、、といった様子。

https://github.com/itext/itextpdf/tags?after=5.0.4

やはり、新規で今JasperReportを使うのは危険か。

他の選択肢は、ApachePDFBoxか。。

 

 

 

ソースコードの貼り付けサンプル

こんな感じでソースやログなどを貼り付ける。

 HTML編集タグを選択し、<pre>タグで囲ってソースを貼り付けることで可能

サンプル↓

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');