[英]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.