Войти

Показать полную графическую версию : Как убедиться "о нажатии на кнопку"?


AlexVong
05-08-2012, 15:06
В цикле выполняется эта функция
Func _Print($_sLink)
_IENavigate($oIE, $sLink & $_sLink) ; переходим по ссылке
$oQuery = _IEGetObjById($oIE, "PrintFile") ; получаем объект по ID
_IEAction($oQuery, "click") ; кликаем на него
_IELoadWait($oIE) ; ждем загрузки страницы в IE
Sleep(100)
EndFunc
но по разным причинам страницы не всегда открываются вовремя, чтобы функция успела нажать на кнопку, а Sleep не хочется увеличивать. Как можно отследить что кнопка нажата успешно и запускать открытие следующей страницы?

Iska
06-08-2012, 00:24
Не полагаться на «IE.au3», а самому обрабатывать .readyState и .Busy объекта автоматизации потребное число раз для конкретной страницы.

AlexVong
06-08-2012, 14:37
Iska, А можно по подробнее, в этом еще новичек...
На каждой странице есть кнопка
<a onclick="getFvt('010');return false;" id="PrintFile" tabindex="15" href="javascript:__doPostBack('PrintFile','')"
после нажатия на которую формируется отчет и отправляется на печать. Визуально на странице ни каких изменений не происходит, на мгновенье после нажатия появляется всплывающая надпись "Ожидайте" и все., таких страниц оч.много и Sleep зачастую или очень долго обрабатывает, а при маленьком значении не успевает нажатьна кнопку.

madmasles
06-08-2012, 15:22
А можно по подробнее, »Дайте ссылку.

AlexVong
06-08-2012, 21:37
madmasles, ссылку не могу, сайт в локальной сети, доступа из сети к нему нет. Могу только код страницы:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
Схема отчета
</title>
<base target="_self" />
<style>
.webservice
{
behavior: url(/Common/WebService/js/WebService.htc);
}
</style>
<meta name="DownloadOptions" content="nosave" /><link href="CSS/AppCSS.css" type="text/css" rel="stylesheet" /><link href="/Common/WebTab/WebTab.css" type="text/css" rel="stylesheet" />
<script src="/Common/WebTab/WebTab.js" language="javascript" type="text/jscript"></script>
<script type="text/javascript" src="/Common/Script/bazaIe.js"></script>
<script language="javascript" type="text/jscript">
function getCookie(par) {
var pageCookie = document.cookie;
var pos = pageCookie.indexOf(par + '=');
if (pos != -1) {
var start = pos + par.length + 1;
var end = pageCookie.indexOf(';', start);
if (end == -1) end = pageCookie.length;
var value = pageCookie.substring(start, end);
value = unescape(value);
return value;
}
}
//
var doc_ref = '';
window.attachEvent("onload", initServrice);
function onChangeTab() {
}
function initServrice() {
var port = (location.port != "") ? (":" + location.port) : ("");
document.all.webService.useService(location.protocol + "//" + location.hostname + port + "/bazaroot/docinput/DocService.asmx?wsdl", "Doc");
var printTrnModel = getCookie("prnModel");
if (printTrnModel) {
document.getElementById("cbPrintTrnModel").checked = (printTrnModel==1)?(true):(false);
}
}
function setCookie(name, val)
{
var date = new Date((new Date()).getTime() + 24 * 3600000);
document.cookie = name + '=' + val + "; expires=" + date.toGMTString();
}
function getTicketFile(ref) {
if ("" != ref)
document.all.webService.Doc.callService(onPrint, "GetFileForPrint", ref, document.getElementById("cbPrintTrnModel").checked);
return false;
}
function onPrint(result) {
if (!getError(result)) return;
bazaie$print(result.value);
}
function getError(result, modal) {
if (result.error) {
if (window.dialogArguments || parent.frames.length == 0 || modal) {
window.showModalDialog("dialog.aspx?type=err", "", "dialogWidth:800px;center:yes;edge:sunken;help:no;status:no;");
}
else
location.replace("dialog.aspx?type=err");
return false;
}
return true;
}
</script>
</head>
<body onload="InitTabs();">
<form name="Form1" method="post" action="default.aspx?ref=0" id="Form1">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wUKMTI5MzAw" />
</div>

<script type="text/javascript">
//
var theForm = document.forms['Form1'];
if (!theForm) {
theForm = document.Form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>


<table id="tbMain" cellpadding="0" cellspacing="0" border="0">
<tr>
<td style="padding-bottom: 10px; border-bottom: black 1px solid;">
<span id="lb_refer" class="title">№ Отчета- </span>
<span id="lb_title" class="title">0001</span>
</td>
<td style="padding-bottom: 10px; border-bottom: black 1px solid;" align="right">
<input name="cbPrintTrnModel" type="checkbox" id="cbPrintTrnModel" style="width: auto; border-width: 0;" onclick="setCookie('prnModel', ((this.checked) ? (1) : (0)))" title="Схема" /><label for="cbPrintTrnModel"
style="white-space: nowrap;" title="схема">схема</label>&nbsp;
<a onclick="getTicketFile('0001');return false;" id="PrintFile" tabindex="3" href="javascript:__doPostBack('PrintFile','')" style="color:Black;background-color:WhiteSmoke;font-weight:normal;">Печать</a>
</td>
</tr>
</table>
<div id="webtab" style="width: 100%; height: 100%">
</div>
<div class="webservice" id="webService" showprogress="true">
</div>
</body>
</html>




© OSzone.net 2001-2012