2016-10-01 5 views
0

私はHtmlUnitDriverでアラートイベントを処理しようとしていますが、いくつかの問題があります。理由を理解したいと思います。ここ はJavaコードである:javaのHtmlUnitDriverでアラートを処理する方法は?

HtmlUnitDriver browser = new HtmlUnitDriver(true); 
browser.get("http://localhost:8001/index.html"); 
browser.findElementById("myButton").click(); 

try { 
    WebDriverWait wait = new WebDriverWait(browser, 2); 
    wait.until(ExpectedConditions.alertIsPresent()); 
    Alert alert = browser.switchTo().alert(); 
    alert.accept(); 
    System.out.println("ALERT"); 
} catch (Exception e) { 
    System.out.println(e.getMessage()); 
    System.out.println("NO ALERT"); 
} 
String htmlContent = browser.getPageSource(); 
System.out.println(htmlContent); 

browser.close();  

これは、HTMLコードである:index.htmlを

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title></title> 
    <meta charset="utf-8" /> 
</head> 
<body> 
    <form id="form1"> 
     <input id="username" name="username" /> 
     <button id="myButton" type="button" value="Page2">Go to Page2</button> 
    </form> 

</body> 
</html> 

<script> 
    document.getElementById("myButton").onclick = function() { 
     location.href = "page2.html"; 
    }; 
</script> 

page2.html

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <title>Page2</title> 
    <meta charset="utf-8" /> 
</head> 
<body onload="myfunction('hello2')"> 
    <p id="result"></p> 
</body> 
</html> 
<script> 
    function myfunction(data) { 
     document.getElementById('result').innerHTML = data 
    } 
</script> 

コンソールに出力される。

NO ALERT 
<?xml version="1.0" encoding="UTF-8"?> 
<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <title> 
     Page2 
    </title> 
    <meta charset="utf-8"/> 
    </head> 
    <body onload="myfunction('hello2')"> 
    ? 


    <p id="result"> 
     hello2 
    </p> 
    <script> 
//<![CDATA[ 

    function myfunction(data) { 
     document.getElementById('result').innerHTML = data 
    } 

//]]> 
    </script> 
    </body> 
</html> 

出力を見ると、ソースコードと少し違うようですが、これについてはほとんど質問がありません。 page2.htmlのアラートが検出されないのはなぜですか? 「?」などの余分な文字があるのはなぜですか? 「// <![CDATA ["?どうすればそれらを避けることができますか?

私はアラートを処理しようとしていますが、私は始めているので、どんな提案も感謝します。

答えて

0

警告はどこから来ると思われますか?警告を処理するコードは大丈夫ですが、どの段階でも警告がトリガーされることを示すHTMLには何もありません。ページ2で実行される唯一のスクリプトはp#resultのinnerHTMLを 'hello2'に設定しています。

余分な文字については、わかりません。 This answerは、生成されているCDATAの内容を明らかにする可能性があります。

+0

大変申し訳ありませんが、私はオンロードの機能を変更しません。私はalert()を書くと正しく動作します。どうもありがとう。 – d3llafr33

関連する問題