ページ

2013年12月19日木曜日

Seleniumを使ってJavaScriptのエラーを検知しよう

Seleniumの回です。 受け入れテストなどで大活躍のSeleniumです。 いろいろ調べているとJavaScriptのエラーを検知できるので検知の仕組みと確認の仕方を検証します。 Javaで実装しエラーの確認方法まで実施します. まずHTMLに以下の文面を埋め込みましょう

OnErrorを使って検知
<script type="text/javascript">
window.javaScriptErrors = [];
window.onerror = function(errorMessage) {
  window.javaScriptErrors[window.javaScriptErrors.length] = errorMessage;
}
</script>
このような内容を用意実際以下のHTMLの用になる。

index_error.html

<html>
  <head>
    <title>Seleniumを使ってJavaScriptのエラーを検知しよう</title>
    <script type="text/javascript">
    window.javaScriptErrors = [];
    window.onerror = function(errorMessage) {
      window.javaScriptErrors[window.javaScriptErrors.length] = errorMessage;
    }
  </script>
  <script type="text/javascript">
    alert(a);
  </script>
  </head>
  <body>
    わざとエラーを出す.
  </body>
</html>

ではJava側の実装です。 面倒なのでMavenで行います.

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.blogspot.tech.joke</groupId>
  <artifactId>selenium</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>selenium</name>
  <dependencies>
   <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>2.38.0</version>
    <systemPath></systemPath>
   </dependency>
  </dependencies>
</project>

こちらのプロジェクトを作成し以下のJavaを作成.

Main.java

package com.blogspot.tech.joke.selenium;

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;


public class Main {
 public static void main(String[] args) {
      WebDriver driver = new FirefoxDriver();
      driver.get("http://localhost/index_error.html");
      JavascriptExecutor executor = (JavascriptExecutor) driver;
      System.out.println(executor.executeScript("return window.javaScriptErrors"));
      driver.quit();
 }
}
こちらのJavaを実行するとエラーが出力されます。
JavaScriptのエラーをクローニングし監視なども作れそうですね
もっと活用できそうなのでいろいろ検証中