Показать полную графическую версию : [решено] Поиск слова в исходном коде html страницы??????
madmasles
22-05-2010, 14:32
klsorat2010,
Чего-то мне не придумать как это сделать.
Как я понимаю, 6 страниц это 6 тестов. Может быть, окно IE сделать не активным и нарисовать 6 кнопок "Пройти тест 1", ..., "Пройти тест 6", и управлять всеми действиями только кнопками? Можно сделать так, чтобы эти кнопки появлялись по очереди, т.е, прошел тест1, появился тест2 и т.д., а в конце - статистика "Вы прошли 2 теста из 6, Ваша оценка твердый тройбан". И, в зависимости от оценки, открывать разные программы. :)
klsorat2010
22-05-2010, 14:37
нет, дело в том что все тесты там уже реализованы на web технологиях, сам тест это компонент тестирования, он стоит на jooml'е она в свою очередь на denwer'e, переделывать все под эти кнопки геморойно, да и нет смысла уже, помойму легче придумать ка спрятать эту кнопку до определенного момента. Ну неужели Вы правда ничего придумать не можете, я бы и сам подумал, но я этот Autoit установил тока вчера и раньше дела ни с ним не имел, а как следствие и с его функциями и переменными, а Вы же вроде уже подкованный человек в этом дела?
Слушайте а может тогда сделать 3 условия для поиска а не 2?
Т.е. если находит "Не сдан", то "сообщение об ошибке", если находит "Сдан", то "Сообщение об удачном прохождении и предложения о запуске программы" (кстати нельзя ли автоматом ее запускать после, ну например прохождения 2-3 сек отображения этого сообщения?) и третий вариант, если не находит не того ни другого, тогда третье сообщение.
Думаю третье условие впихнуто не так сложно?
klsorat2010
22-05-2010, 15:32
Или как вариант, может можно сделать, что бы кнопка отображалась при условии нахождения на странице слова "Результата"?
Спасибо со скрытием кнопки я уже сам разобрался, но остался вопрос об автоматическом запуске программы после отображения окна об успешном прохождении теста
madmasles
22-05-2010, 16:39
klsorat2010,
Вот что у меня получилось. При активации кнопки Проверка теста окно с IE становится не активным до тех пор, пока на кнопку не нажмешь. #RequireAdmin
#include "GUIConstantsEx.au3"
#include "WindowsConstants.au3"
#include "IE.au3"
Opt("TrayMenuMode", 1)
_IEErrorHandlerRegister()
$oIE = _IECreateEmbedded()
$hForm = GUICreate("Автоматизированная система обучения.", @DesktopWidth, @DesktopHeight, 0, 0, -1, $WS_EX_TOOLWINDOW)
GUISetBkColor(0x99CCFF)
$GUIActiveX = GUICtrlCreateObj($oIE, 5, 5, @DesktopWidth - 10, @DesktopHeight - 150)
$GUI_Button_Test = GUICtrlCreateButton("Запустить АСО", @DesktopWidth / 2 - 250, _
@DesktopHeight - 100, 150, 30)
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetBkColor(-1, 0xFFCCFF)
GUICtrlSetFont(-1, 11, 600, 2, "Arial")
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, "Перейти на страницы прохождения тестов.")
$GUI_Button_Check = GUICtrlCreateButton("Запустить MatLab", @DesktopWidth / 2 + 100, _
@DesktopHeight - 100, 150, 30)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetBkColor(-1, 0xFFCCFF)
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetFont(-1, 11, 600, 2, "Arial")
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, "Проверить результат теста.")
DllCall("User32.dll", "long", "AnimateWindow", "hwnd", $hForm, "long", 1000, "long", 0x10)
GUISetState()
_IENavigate($oIE, "C:/proba.jpg")
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
DllCall("User32.dll", "long", "AnimateWindow", "hwnd", $hForm, "long", 1000, "long", _
0x10 + 0x10000)
Exit
Case $msg = $GUI_Button_Test
GUICtrlSetState($GUI_Button_Test, $GUI_DISABLE)
_IENavigate($oIE, "http://demo/")
_ControlTest()
Case $msg = $GUI_Button_Check
_ControlTest()
GUICtrlSetState($GUI_Button_Check, $GUI_DISABLE)
$sText = _IEBodyReadText($oIE)
;##########################################################################################
If StringInStr($sText, "Не сдан") <> 0 Then
$iMsgBoxAnswer1 = MsgBox(266257, "Внимание!", "Вы не прошли этот тест." & @CRLF _
& @CRLF & "ОК - продолжить прохождение тестов." & _
@CRLF & "Отмена - вернуться на домашнюю страницу." & @CRLF & _
"У вас есть 5 секунд для выбора", 5)
Select
Case $iMsgBoxAnswer1 = 1 Or $iMsgBoxAnswer1 = -1;OK
_IEAction($oIE, "back")
GUICtrlSetState($GUIActiveX, $GUI_ENABLE)
_ControlTest()
Case $iMsgBoxAnswer1 = 2 ;Cancel
_IENavigate($oIE, "http://demo/index.php?option=com_ariquiz&Itemid=8")
GUICtrlSetState($GUIActiveX, $GUI_ENABLE)
GUICtrlSetState($GUI_Button_Test, $GUI_ENABLE)
EndSelect
Else
$iMsgBoxAnswer = MsgBox(266275, "Успех!", "Вы успешно прошли этот тест!" & @CRLF _
& @CRLF & "Да - открыть архиватор WinRAR и продолжить прохождение тестов." & _
@CRLF & "Нет - продолжить прохождение тестов" & @CRLF & _
"Отмена - вернуться на домашнюю страницу." & @CRLF & _
"У вас есть 5 секунд для выбора", 5)
Select
Case $iMsgBoxAnswer = 6 ;Yes
Run(@ProgramFilesDir & "\WinRAR\WinRAR.exe")
_IEAction($oIE, "back")
GUICtrlSetState($GUIActiveX, $GUI_ENABLE)
_ControlTest()
Case $iMsgBoxAnswer = 7 Or $iMsgBoxAnswer = -1 ;No
_IEAction($oIE, "back")
GUICtrlSetState($GUIActiveX, $GUI_ENABLE)
_ControlTest()
Case $iMsgBoxAnswer = 2 ;Cancel
_IENavigate($oIE, "http://demo/index.php?option=com_ariquiz&Itemid=8")
GUICtrlSetState($GUIActiveX, $GUI_ENABLE)
GUICtrlSetState($GUI_Button_Test, $GUI_ENABLE)
EndSelect
EndIf
;##########################################################################################
EndSelect
WEnd
Func _ControlTest()
While 1
Local $sUrl = _IEPropertyGet($oIE, "locationurl")
If StringInStr($sUrl, _
"http://demo/index.php?option=com_ariquiz&task=quiz_finished&ticketId=") _
<> 0 Then
GUICtrlSetState($GUI_Button_Check, $GUI_ENABLE)
GUICtrlSetState($GUIActiveX, $GUI_DISABLE)
Return
EndIf
Sleep(100)
WEnd
EndFunc ;==>_ControlTest
klsorat2010
22-05-2010, 16:46
madmasles,
спасибо, с кнопкой я разобрался, а как насчет автоматического запуск программы после сообщения об успешном прохождениии теста, без возможности какого либо выбора, сдал тест, нажал кнопку о проверке, увидел сообщении об успешной сдаче, 3-4 сек, запустилась програма
и еще, у меня вместо первой страницы стоит
_IENavigate($oIE, "C:/proba.jpg")
как сделать так что бы кнопка "$GUI_Button_Test" былак активной только на этой странице?
madmasles
22-05-2010, 17:15
запустилась програма »А после запуска программы какие действия?
Кнопка "$GUI_Button_Test" в моем коде и так только на первой странице активна.
klsorat2010
22-05-2010, 18:47
У меня кнопка $GUI_Button_Test = GUICtrlCreateButton("Запустить АСО", @DesktopWidth / 2 - 250, @DesktopHeight - 100, 150, 30) активна все время.
И еще надо бы реализовать кнопку выхода из программы.
#RequireAdmin
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
Opt("TrayMenuMode", 1)
_IEErrorHandlerRegister()
$oIE = _IECreateEmbedded()
$hForm = GUICreate("Автоматизированная сисиема обучения", @DesktopWidth, @DesktopHeight, _ 0, 0, _
$WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
$GUIActiveX = GUICtrlCreateObj($oIE, 5, 5, @DesktopWidth - 10, @DesktopHeight - 150)
$GUI_Button_Test = GUICtrlCreateButton("Запустить АСО", @DesktopWidth / 2 - 250, @DesktopHeight - 100, 150, 30)
$GUI_Button_Check = GUICtrlCreateButton("Запустить MatLab", @DesktopWidth / 2 - 50, @DesktopHeight - 100, 150, 30) GUICtrlSetState(-1, $GUI_DISABLE)
$GUI_Button_Home = GUICtrlCreateButton("Начать заново", @DesktopWidth / 2 + 150, @DesktopHeight - 100, 150, 30) GUICtrlSetState(-1, $GUI_DISABLE) GUISetState()
_IENavigate($oIE, "C:/proba.jpg")
While 1 $msg = GUIGetMsg() Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $GUI_Button_Test
_IENavigate($oIE, "http://demo/")
While 1
Sleep(100)
$sText = _IEBodyReadText($oIE)
If StringInStr($sText, "Quiz Result") <> 0 Then ExitLoop
WEnd GUICtrlSetState($GUI_Button_Check, $GUI_ENABLE)
Case $msg = $GUI_Button_Check
GUICtrlSetState($GUI_Button_Check, $GUI_DISABLE)
GUICtrlSetState($GUI_Button_Test, $GUI_DISABLE)
$sText = _IEBodyReadText($oIE)
If StringInStr($sText, "Не сдан") <> 0 Then
MsgBox(266256, "Внимание!", "Вы не прошли тестирование, запуск не возможен!")
Else
If MsgBox(266308, "Поздравляем!", "Вы успешно прошли тестирование") <> 0 Then
Run("c:\Program Files\WinRAR\WinRAR.exe")
EndIf
EndIf
GUICtrlSetState($GUI_Button_Home, $GUI_ENABLE)
Case $msg = $GUI_Button_Test
GUICtrlSetState($GUI_Button_Home, $GUI_ENABLE)
_IENavigate($oIE, "C:/proba.jpg")
GUICtrlSetState($GUI_Button_Test, $GUI_DISABLE)
Case $msg = $GUI_Button_Home
GUICtrlSetState($GUI_Button_Home, $GUI_DISABLE)
_IENavigate($oIE, "http://demo/index.php?option=com_ariquiz&Itemid=8")
GUICtrlSetState($GUI_Button_Test, $GUI_ENABLE)
EndSelect
WEnd
madmasles
22-05-2010, 19:52
klsorat2010,
Вы код обрамляйте тегом код (#). Вы мой последний вариант не смотрели?
а как насчет автоматического запуск программы после сообщения об успешном прохождениии теста, без возможности какого либо выбора »
А после запуска программы какие действия? »Вопрос остается открытым.
klsorat2010
22-05-2010, 20:48
у меня не открываются эти долбаные кавычки. Какой вопрос остается открытым? После запуска программы по кнопке начать тестирование, она так же остается активной.
madmasles
22-05-2010, 21:06
а как насчет автоматического запуск программы после сообщения об успешном прохождениии теста, без возможности какого либо выбора, сдал тест, нажал кнопку о проверке, увидел сообщении об успешной сдаче, 3-4 сек, запустилась програма »В третий раз спрашиваю: увидел сообщение об успешной сдаче, 3-4 сек, запустилась программа дальше какие действия?
Вы мой последний код скопируйте, поменяйте ссылки на нужные Вам, а потом будем разбираться дальше.
klsorat2010
22-05-2010, 23:02
Цитата klsorat2010:а как насчет автоматического запуск программы после сообщения об успешном прохождениии теста, без возможности какого либо выбора, сдал тест, нажал кнопку о проверке, увидел сообщении об успешной сдаче, 3-4 сек, запустилась програма » »
я еще раз говорю, у меня не открываются эти кавычки.
В третий раз спрашиваю: увидел сообщение об успешной сдаче, 3-4 сек, запустилась программа дальше какие действия, дальше? ну пускай открывается какая нибудь старница, или вообще ничего, в принципе это особо не важно.
madmasles
22-05-2010, 23:23
klsorat2010,
Я не понял, какие кавычки у Вас не открываются?
klsorat2010
22-05-2010, 23:36
Цитата madmasles:Цитата klsorat2010:а как насчет автоматического запуск программы после сообщения об успешном прохождениии теста, без возможности какого либо выбора, сдал тест, нажал кнопку о проверке, увидел сообщении об успешной сдаче, 3-4 сек, запустилась програма » » »
Которые в конце этого поста, и в которых как я понял код который осуществляет запуск программы без участия пользователя
madmasles
23-05-2010, 00:18
klsorat2010,
Вот в этом посте на 5-ой странице код, про который я говорю:
http://forum.oszone.net/post-1418822.html#post1418822
PS
klsorat2010,
Я немного поправил код. Там сейчас вариант, в котором у пользователя есть выбор действий после проверки теста. Если хотите сделать без участия пользователя, то замените кусок кода между такими зелеными полосками:
;############################################################
На этот:If StringInStr($sText, "Не сдан") = 0 Then
SplashTextOn("Поздравляем!", "Вы успешно прошли тестирование. Сейчас будет запущен архиватор WinRAR." _
, 250, 80, -1, -1, 16, "Arial", 11, 600)
Sleep(5000)
SplashOff()
Run(@ProgramFilesDir & "\WinRAR\WinRAR.exe")
_IENavigate($oIE, "http://demo/index.php?option=com_ariquiz&Itemid=8")
GUICtrlSetState($GUIActiveX, $GUI_ENABLE)
GUICtrlSetState($GUI_Button_Test, $GUI_ENABLE)
Else
SplashTextOn("Внимание!", "Вы не прошли тестирование, запуск не возможен!" _
, 250, 80, -1, -1, 16, "Arial", 11, 600)
Sleep(5000)
SplashOff()
_IENavigate($oIE, "http://demo/index.php?option=com_ariquiz&Itemid=8")
GUICtrlSetState($GUIActiveX, $GUI_ENABLE)
GUICtrlSetState($GUI_Button_Test, $GUI_ENABLE)
EndIf
klsorat2010
23-05-2010, 01:37
Спасибо, завтра посмотрю что получилось.
У меня тут возник еще один вопрос, как вы заметели у меня в начале в оболочке выводится рисунок, можно ли вместо него вствить видео, это чисто в познавательных целях :)
И как убрать синию полосу снижу и вернуть кнопки к стилю по умолчанию ,какими они были в начале?
madmasles
23-05-2010, 07:18
можно ли вместо него вствить видео » У меня IE не открывает .avi. Попробуйте с флеш поиграться.
убрать синию полосу снижу и вернуть кнопки к стилю по умолчанию »Вы справку посмотрите по этим функциям. Или в английской, что лучше, или в русской (http://www.autoitscript.com/autoit3/docs.shtml). Русская во многом устарела, но другой пока нет. С цветом можете поэкспериментировать. (http://web.artlebedev.ru/tools/colors/)
klsorat2010
23-05-2010, 17:38
а куда этот номер цвета вставлять? я че то не нашел?
madmasles
23-05-2010, 18:07
klsorat2010,
;...
GUICreate("", 200, 100) ;создать окно.
GUISetBkColor(0x99CCFF) ;указать фоновый цвет окна.
;...
GUICtrlCreateButton("ОК", 250, 100, 150, 30);создать кнопку.
GUICtrlSetColor(-1, 0x0000FF) ;цвет надписи на кнопке.
GUICtrlSetBkColor(-1, 0xFFCCFF) ;цвет фона кнопки.
GUICtrlSetFont(-1, 11, 600, 2, "Arial") ;шрифт надписи на кнопке.
GUICtrlSetCursor(-1, 0) ;вид курсора при наведении на кнопку.
GUICtrlSetTip(-1, "Перейти на страницы прохождения тестов.") ;подсказка при наведении на кнопку.
;...
klsorat2010
24-05-2010, 13:16
после нажатия на кнопку запустить MatLab появляется ошибка:
http://s41.radikal.ru/i094/1005/0f/d26a7e5850e6t.jpg (http://radikal.ru/F/s41.radikal.ru/i094/1005/0f/d26a7e5850e6.jpg.html)
klsorat2010
24-05-2010, 14:31
Все разобрался :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.