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のエラーをクローニングし監視なども作れそうですね
もっと活用できそうなのでいろいろ検証中