Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Поиск слова в исходном коде html страницы??????

Ответить
Настройки темы
[решено] Поиск слова в исходном коде html страницы??????

Новый участник


Сообщения: 35
Благодарности: 0

Профиль | Отправить PM | Цитировать


Народ, помогите пожалуйста, для диплома надо. Короче надо реализовать скрипт (на любом языке) который бы осуществлял поиск определенного слова в коде страницы, если находит то открывает одну ссылку, если нет другую. Скрипт должен запускаться по нажатию кнопки, заранее всем спасибо!

Отправлено: 23:27, 19-05-2010

 

Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


klsorat2010,
Чего-то мне не придумать как это сделать.
Как я понимаю, 6 страниц это 6 тестов. Может быть, окно IE сделать не активным и нарисовать 6 кнопок "Пройти тест 1", ..., "Пройти тест 6", и управлять всеми действиями только кнопками? Можно сделать так, чтобы эти кнопки появлялись по очереди, т.е, прошел тест1, появился тест2 и т.д., а в конце - статистика "Вы прошли 2 теста из 6, Ваша оценка твердый тройбан". И, в зависимости от оценки, открывать разные программы.

Отправлено: 14:32, 22-05-2010 | #41



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 35
Благодарности: 0

Профиль | Отправить PM | Цитировать


нет, дело в том что все тесты там уже реализованы на web технологиях, сам тест это компонент тестирования, он стоит на jooml'е она в свою очередь на denwer'e, переделывать все под эти кнопки геморойно, да и нет смысла уже, помойму легче придумать ка спрятать эту кнопку до определенного момента. Ну неужели Вы правда ничего придумать не можете, я бы и сам подумал, но я этот Autoit установил тока вчера и раньше дела ни с ним не имел, а как следствие и с его функциями и переменными, а Вы же вроде уже подкованный человек в этом дела?

Слушайте а может тогда сделать 3 условия для поиска а не 2?

Т.е. если находит "Не сдан", то "сообщение об ошибке", если находит "Сдан", то "Сообщение об удачном прохождении и предложения о запуске программы" (кстати нельзя ли автоматом ее запускать после, ну например прохождения 2-3 сек отображения этого сообщения?) и третий вариант, если не находит не того ни другого, тогда третье сообщение.

Думаю третье условие впихнуто не так сложно?

Отправлено: 14:37, 22-05-2010 | #42


Новый участник


Сообщения: 35
Благодарности: 0

Профиль | Отправить PM | Цитировать


Или как вариант, может можно сделать, что бы кнопка отображалась при условии нахождения на странице слова "Результата"?

Спасибо со скрытием кнопки я уже сам разобрался, но остался вопрос об автоматическом запуске программы после отображения окна об успешном прохождении теста

Отправлено: 15:32, 22-05-2010 | #43


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось madmasles, 23-05-2010 в 00:56. Причина: Поправил код


Отправлено: 16:39, 22-05-2010 | #44


Новый участник


Сообщения: 35
Благодарности: 0

Профиль | Отправить PM | Цитировать


madmasles,
спасибо, с кнопкой я разобрался, а как насчет автоматического запуск программы после сообщения об успешном прохождениии теста, без возможности какого либо выбора, сдал тест, нажал кнопку о проверке, увидел сообщении об успешной сдаче, 3-4 сек, запустилась програма

и еще, у меня вместо первой страницы стоит
Код: Выделить весь код
_IENavigate($oIE, "C:/proba.jpg")
как сделать так что бы кнопка "$GUI_Button_Test" былак активной только на этой странице?

Отправлено: 16:46, 22-05-2010 | #45


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Цитата klsorat2010:
запустилась програма »
А после запуска программы какие действия?
Кнопка "$GUI_Button_Test" в моем коде и так только на первой странице активна.

Отправлено: 17:15, 22-05-2010 | #46


Новый участник


Сообщения: 35
Благодарности: 0

Профиль | Отправить PM | Цитировать


У меня кнопка $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

Последний раз редактировалось klsorat2010, 22-05-2010 в 20:54.


Отправлено: 18:47, 22-05-2010 | #47


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


klsorat2010,
Вы код обрамляйте тегом код (#). Вы мой последний вариант не смотрели?

Цитата klsorat2010:
а как насчет автоматического запуск программы после сообщения об успешном прохождениии теста, без возможности какого либо выбора »
Цитата madmasles:
А после запуска программы какие действия? »
Вопрос остается открытым.

Отправлено: 19:52, 22-05-2010 | #48


Новый участник


Сообщения: 35
Благодарности: 0

Профиль | Отправить PM | Цитировать


у меня не открываются эти долбаные кавычки. Какой вопрос остается открытым? После запуска программы по кнопке начать тестирование, она так же остается активной.

Отправлено: 20:48, 22-05-2010 | #49


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Цитата klsorat2010:
а как насчет автоматического запуск программы после сообщения об успешном прохождениии теста, без возможности какого либо выбора, сдал тест, нажал кнопку о проверке, увидел сообщении об успешной сдаче, 3-4 сек, запустилась програма »
В третий раз спрашиваю: увидел сообщение об успешной сдаче, 3-4 сек, запустилась программа дальше какие действия?

Вы мой последний код скопируйте, поменяйте ссылки на нужные Вам, а потом будем разбираться дальше.

Последний раз редактировалось madmasles, 22-05-2010 в 21:26. Причина: добавил.


Отправлено: 21:06, 22-05-2010 | #50



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Поиск слова в исходном коде html страницы??????

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Отображение HTML страницы в окне assch AutoIt 3 10-08-2009 14:58
Сохранить код из HTML страницы... FlatX007 AutoIt 6 29-04-2009 23:04
[решено] Работа с html-кодом страницы, поиск и копирование нужных строк Sestrichka AutoIt 14 02-04-2009 16:51
[решено] Поиск нужного текста в html коде страницы ph0en1x AutoIt 8 16-02-2009 02:38
Медиа - автозапуск html страницы с CD WChek Хочу все знать 38 09-06-2008 15:23




 
Переход