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