簡體   English   中英

帶有casperJS的AJAX,可確定返回文本失敗並發送電子郵件

[英]AJAX with casperJS to determine fail from returned text and send email

問題:我想做的是每當CasperJS AJAX返回1或更大的Fail時都會有一封電子郵件出去,例如Fail: 1 ["user666name"] 有沒有一種方法來獲取返回的AJAX文本的一部分,並基於該日志將其記錄為“ Fail ,然后發送有關此失敗的電子郵件通知?

說明:我正在使用CasperJS將多個用戶登錄到一個頁面中,該腳本的最終回顯基於正確的用戶名/密碼返回成功登錄和失敗登錄的數量,如下所示:

測試結果:成功:3 [“ username1”,“ username2”,“ username3”]失敗:1 [“ user666name”]

當回顯CasperJS回顯結果時,我正在使用AJAX從PHP文件中調用此CasperJS腳本。 我使用setTimeout將其設置為每30分鍾運行一次,而設置AJAX的方式會將其加載到發出請求的頁面中:

測試結果:成功:3 [“ username1”,“ username2”,“ username3”]失敗:1 [“ user666name”]

測試於62189毫秒完成,2014年7月26日星期六12:58:34 GMT-0400(EDT)

這是我的AJAX PHP頁面:

<div id="mainContent">
<p>Welcome to the CasperJS Automated Testing Utility</p>
  <button id="button_AJAX">Run casperJS</button>
  <button id="button_STOP" onclick="myStopFunction()">Stop casperJS</button>
</div>
<div id="loading"></div>
<script type="text/javascript">
    $('#button_AJAX').click(function doStuff() {
        // add loading image to div
       $('#loading').html('<img src="rays.gif"><br><i>Web harvesting in progress; please wait for test results.</i>');
            var ajaxTime= new Date().getTime();
            var today = new Date();
            var dd = today.getDate();
            var mm = today.getMonth()+1; //January is 0!
            var yyyy = today.getFullYear();
        // Run ajax request
        $.ajax({
            type: "GET",
            dataType: "text",
            url: "phpwithCasperJS.php",
                // AJAX success
            success: function (data) {
                    $('#loading').html(data);
                    // Total time and date / time of AJAX completion
                    var totalTime = new Date().getTime()-ajaxTime;
                    window.alert = function(message) {
                        var output = document.getElementById('loading'),
                            newTextContainer = document.createElement('p'),
                            text = document.createTextNode(message);
                        newTextContainer.appendChild(text);
                        output.appendChild(newTextContainer);
                        if(dd<10) {
                        dd='0'+dd
                        } 
                        if(mm<10) {
                            mm='0'+mm
                        } 
                        today = mm+'/'+dd+'/'+yyyy;         
                    }
                    alert("Test completed in " + totalTime + " ms, on " + today);
            }   
        }); 
    timeout = setTimeout(doStuff,3000000);  });
    $("#button_AJAX").click(function() {$("#button_AJAX").text("CasperJS Executed");});
    $("#button_STOP").click(function() {$("#button_AJAX").text("Run casperJS");});
    function myStopFunction() {
        clearTimeout(timeout);
    }
</script>

PHP包含casperJS腳本:

<table>
<tr>
  <td><p style="color: #ffffff; background-color: #000000">Test Results: </p></td>
  <td><?php
    echo exec("/usr/local/bin/casperjs /path/to/script/casperJSscript.js");
?></td> 
</tr>
</table>

phpwithCasperJS.php在您執行CasperJS腳本,你需要看一下從命令返回,並基於該發送電子郵件的輸出:

<?php
    $output = exec("/usr/local/bin/casperjs /path/to/script/casperJSscript.js");
    if (strpos($output, 'Fail: 0') === FALSE) {
        mail($to, $subject, $message);
    }
    echo $output;
?>

如果您的服務器被spamhaus阻止,則您可能希望通過Mail_smtp發送電子郵件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM