Поиск слова в исходном коде html страницы??????
Народ, помогите пожалуйста, для диплома надо. Короче надо реализовать скрипт (на любом языке) который бы осуществлял поиск определенного слова в коде страницы, если находит то открывает одну ссылку, если нет другую. Скрипт должен запускаться по нажатию кнопки, заранее всем спасибо!
|
klsorat2010,
Вы конкретную задачу поставьте. Т.е. страница - http://адрес/, если находим "нужное слово" в коде, то делаем "действие-1", если не находим, то делаем "действие-2". И так далее. Где кнопка должна быть, и т.д. и т.п. |
Вложений: 2
Хорошо, давайте по пунктам.
1. Есть сайт с модулем тестирования, по прохождения которого открывается страница: 2. Поиск я думаю можно производить по значению параметра "Результат" (сдан, не сдан): 3. Если "не сдан", то открывается картинка по адресу "http://demo/images/stories/zapret_dostupa.jpg": 4. Если "сдан", то открывается htatest.hta файл по адресу "c:\WebServers\home\demo\www\htatest.hta": 5. В ниже приведеном коде hta файла, производится запуск блокнота из папки windows, надо переделать для запуска какой нибудь программы из Program Files, нк например WINRAR'a. 6. Еще желательно что бы окно открывающееся по адресу "c:\WebServers\home\demo\www\htatest.hta" имело фиксированный размер. Вроде все, заранее спасибо за помощь. 7. Исходный код страницы и hta файла смотрите во вложенных файлах. P.S. Сайт находится на локальном компьютере, т.е. localhost |
klsorat2010,
Давайте тоже по пунктам, как я понял. 1. При запуске нашей программки открывается окно (примерно как на скриншоте-1), в котором открывается нужный нам сайт. 2. Я нарисовал 2 кнопки, но можно сделать сколько надо. Какие конкретно действия должны происходить при нажимании на них. Все эти данные можно мне в ПМ. |
По нажатию на кнопку, должен запускаться скрипт, который производит поиск определенного слова в исходном коде страницы ("Сдал" например), если это слово присутствует, то производится открытие страницы по адресу "c:\WebServers\home\demo\www\htatest.hta", на этой странице пользователь уже может запустить нужную мне программу (желательно что бы после запуска этой программы, страница htatest.hta закрывалась бы), НО, если скрипт после поиска в коде НЕ НАХОДИТ слово "Сдал", то открывается рисунок по адресу "http://demo/images/stories/zapret_dostupa.jpg". Вроде все предельно понятно, заранее спасибо за помощь.
|
Цитата:
|
Цитата:
Цитата:
Для AutoIT это конечно не проблема(разве что меня смущает динамический TITLE)... Цитата:
|
Да, слово которое нужно будет искать в одном экземпляре, либо "Сдал" либо "Не сдал"
Нет, Денвер не на каждом компе, да это и не важно, главное что бы все работало на одной машине. Так кто нибудт поможет или как? |
klsorat2010,
Примерно так у меня получилось: |
Цитата:
|
klsorat2010, это не ссылка а раскрывающийся блок текста в котором код. вот такой
Код:
#include <GUIConstantsEx.au3> |
Цитата:
|
Цитата:
|
спасибо конечно, тока я не вижу где же сам поиск слова то?
|
klsorat2010,
Код:
$sText = _IEBodyReadText($oIE) Код:
If StringInStr($sText, "Забыли пароль") <> 0 Then Вы попробуйте выйти из учетной записи и проверить скрипт, потом войти на форум и опять проверить скрипт. |
madmasles спасибо, тока как мне это в html то впихнуть?
да и блокнот не запускается если выйти/войти на этоот форум |
klsorat2010,
А зачем его запихивать в html? Он и так работает (у меня). Попробуйте вставить свои ссылки, свое слово для поиска, свою программу для запуска. У меня на Win XP блокнот открывает, попробуйте в самой первой строке написать #RequireAdmin, если у Вас Vista или 7. У меня работает с вашими файлами (я их переименовал на расширение .html) и с такой ссылкой: file://localhost/C:/исходный%20код.html, и с такой: C:\htafile_.hta.html. |
чет я не пойму, а какое тогда расширение ставить если не html?
|
klsorat2010,
Вы имеете в виду расширение самого скрипта? Его расширение должно быть .au3 |
#RequireAdmin
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <IE.au3> перед "#RequireAdmin " #include не надо? и как его тогда запускать если он .au3? |
klsorat2010,
Нет. У вас все правильно. |
каким образом его запустить?
|
klsorat2010,
У Вас AutoIt установлен? |
вот так "AutoIt3X.RunScript('c:\myscript.au3')"?
нет, без него ни как да? |
klsorat2010,
Я Вам чуть позже все, что надо пришлю. |
madmasles спасибо, буду примного благодарен
|
klsorat2010,
Вот тут: My_First_AutoIt_Script все, что Вам нужно лежит. Запустите скрипт батником. |
madmasles спасибо, с этим я уже разобрался, сам запустил, тока у меня пару вопросов:
1. как растянуть это все на весь экран? 2. какой адрес мне написать если у меня сайт на локальном хосте? и еще можно ли сделать что бы кнопка "проверить результат", становилас активной только на опреденой странице/цах? |
klsorat2010,
На весь экран развернуть можно так: Код:
;... Цитата:
Код:
;... |
Спасибо Вам, Очень помогли!
|
последний вопрос, куда именно надо вставить
HTML код:
;... _IENavigate($oIE, "нужная Вам страница") HTML код:
Case $msg = $GUI_Button_Test |
klsorat2010,
Чтобы скрипт не реагировал на кликанье по иконке в трее добавьте: Код:
;... Цитата:
|
Вы, когда перешли на страницу http://demo/, что-то делаете в ней?
ну там после нне пару страниц еще идет, а потом начинается тестирование и выводится результат на странице HTML код:
http://demo/index.php?option=com_ariquiz&task=quiz_finished&ticketId=d2d6141dd5c7d42b1fef78ed32fbee69&Itemid=8 |
klsorat2010,
Так попробуйте: Код:
;... |
madmasles спасибо, а если мне на нескольких страницах такое надо проделать, можно что нибудь придумать?
|
klsorat2010,
Можно, только надо знать, что конкретно придумать. :) |
Мне надо что бы кнопка проверки работала на 6 страница, цифровая часть этих адресов всегда меняется, но буквенная всегда одна и та же:
HTML код:
http://demo/index.php?option=com_ariquiz&task=quiz_finished&ticketId=ЭТА_ЧАСТЬ_ВСЕГДА_РАЗНАЯ=8 Тогда и 6 страниц не надо, только одна, но не точное значение страницы, а только часть. |
klsorat2010,
А перед появлением любой из этих 6-ти страниц другие страницы будут? Если будут, то на них кнопка Проверка теста должна быть активной или нет? |
да, перед появлением этих 6 страниц другие страницы конечно есть, НО на них кнопка проверка теста НЕ должна быть активной.
Кстати эти 6 страниц идут не последовательно, между ними тоже есть пара тройк других страниц на которых кнопка не должна работать |
ответьте пожалуйста, обещаю это был последний вопрос :)
|
klsorat2010,
Чего-то мне не придумать как это сделать. Как я понимаю, 6 страниц это 6 тестов. Может быть, окно IE сделать не активным и нарисовать 6 кнопок "Пройти тест 1", ..., "Пройти тест 6", и управлять всеми действиями только кнопками? Можно сделать так, чтобы эти кнопки появлялись по очереди, т.е, прошел тест1, появился тест2 и т.д., а в конце - статистика "Вы прошли 2 теста из 6, Ваша оценка твердый тройбан". И, в зависимости от оценки, открывать разные программы. :) |
нет, дело в том что все тесты там уже реализованы на web технологиях, сам тест это компонент тестирования, он стоит на jooml'е она в свою очередь на denwer'e, переделывать все под эти кнопки геморойно, да и нет смысла уже, помойму легче придумать ка спрятать эту кнопку до определенного момента. Ну неужели Вы правда ничего придумать не можете, я бы и сам подумал, но я этот Autoit установил тока вчера и раньше дела ни с ним не имел, а как следствие и с его функциями и переменными, а Вы же вроде уже подкованный человек в этом дела?
Слушайте а может тогда сделать 3 условия для поиска а не 2? Т.е. если находит "Не сдан", то "сообщение об ошибке", если находит "Сдан", то "Сообщение об удачном прохождении и предложения о запуске программы" (кстати нельзя ли автоматом ее запускать после, ну например прохождения 2-3 сек отображения этого сообщения?) и третий вариант, если не находит не того ни другого, тогда третье сообщение. Думаю третье условие впихнуто не так сложно? |
Или как вариант, может можно сделать, что бы кнопка отображалась при условии нахождения на странице слова "Результата"?
Спасибо со скрытием кнопки я уже сам разобрался, но остался вопрос об автоматическом запуске программы после отображения окна об успешном прохождении теста |
klsorat2010,
Вот что у меня получилось. При активации кнопки Проверка теста окно с IE становится не активным до тех пор, пока на кнопку не нажмешь. Код:
#RequireAdmin |
madmasles,
спасибо, с кнопкой я разобрался, а как насчет автоматического запуск программы после сообщения об успешном прохождениии теста, без возможности какого либо выбора, сдал тест, нажал кнопку о проверке, увидел сообщении об успешной сдаче, 3-4 сек, запустилась програма и еще, у меня вместо первой страницы стоит Код:
_IENavigate($oIE, "C:/proba.jpg") |
Цитата:
Кнопка "$GUI_Button_Test" в моем коде и так только на первой странице активна. |
У меня кнопка $GUI_Button_Test = GUICtrlCreateButton("Запустить АСО", @DesktopWidth / 2 - 250, @DesktopHeight - 100, 150, 30) активна все время.
И еще надо бы реализовать кнопку выхода из программы. Код:
#RequireAdmin |
klsorat2010,
Вы код обрамляйте тегом код (#). Вы мой последний вариант не смотрели? Цитата:
Цитата:
|
у меня не открываются эти долбаные кавычки. Какой вопрос остается открытым? После запуска программы по кнопке начать тестирование, она так же остается активной.
|
Цитата:
Вы мой последний код скопируйте, поменяйте ссылки на нужные Вам, а потом будем разбираться дальше. |
Цитата:
В третий раз спрашиваю: увидел сообщение об успешной сдаче, 3-4 сек, запустилась программа дальше какие действия, дальше? ну пускай открывается какая нибудь старница, или вообще ничего, в принципе это особо не важно. |
klsorat2010,
Я не понял, какие кавычки у Вас не открываются? |
Цитата:
|
klsorat2010,
Вот в этом посте на 5-ой странице код, про который я говорю: http://forum.oszone.net/post-1418822.html#post1418822 PS klsorat2010, Я немного поправил код. Там сейчас вариант, в котором у пользователя есть выбор действий после проверки теста. Если хотите сделать без участия пользователя, то замените кусок кода между такими зелеными полосками: Код:
;############################################################ Код:
If StringInStr($sText, "Не сдан") = 0 Then |
Спасибо, завтра посмотрю что получилось.
У меня тут возник еще один вопрос, как вы заметели у меня в начале в оболочке выводится рисунок, можно ли вместо него вствить видео, это чисто в познавательных целях :) И как убрать синию полосу снижу и вернуть кнопки к стилю по умолчанию ,какими они были в начале? |
Цитата:
Цитата:
|
а куда этот номер цвета вставлять? я че то не нашел?
|
klsorat2010,
Код:
;... |
|
Все разобрался :)
|
klsorat2010,
Это я забыл скобку поставить. |
Тут еще проблема появилась, если запустить скрипт, а потом сразу его закрыть, то все нормально, но если поработать в нем некоторое время, то кнопка закрытия программы не реагирует, т.е. она нажимается но толку ноль, помогает только завершение процесса Autoit.exe
|
klsorat2010,
Пока какая-либо кнопка не станет активной, идет проверка в цикле и скрипт не реагирует на другие действия. Т.е. закрыть окно можно только тогда, когда активна одна из кнопок. |
Ну так первая кнопка зпускающая первую страницу активна всегда.
|
klsorat2010,
В моем коде кнопка $GUI_Button_Test становится не активной после нажатия на нее и активируется только по возвращению на домашнюю страницу. В Вашем - не знаю. |
Не знаю может уже не актуально но нашёл вариант поиска.
<script type="text/javascript"> var lastResFind=""; // последний удачный результат var copy_page=""; // копия страницы в ихсодном виде function TrimStr(s) { s = s.replace( /^\s+/g, ''); return s.replace( /\s+$/g, ''); } function FindOnPage(inputId) {//ищет текст на странице, в параметр передается ID поля для ввода var obj = window.document.getElementById(inputId); var textToFind; if (obj) { textToFind = TrimStr(obj.value);//обрезаем пробелы } else { alert("Введенная фраза не найдена"); return; } if (textToFind == "") { alert("Вы ничего не ввели"); return; } if(document.body.innerHTML.indexOf(textToFind)=="-1") alert("Ничего не найдено, проверьте правильность ввода!"); if(copy_page.length>0) document.body.innerHTML=copy_page; else copy_page=document.body.innerHTML; document.body.innerHTML = document.body.innerHTML.replace(eval("/name="+lastResFind+"/gi")," ");//стираем предыдущие якори для скрола document.body.innerHTML = document.body.innerHTML.replace(eval("/"+textToFind+"/gi"),"<a name="+textToFind+" style='background:red'>"+textToFind+"</a>"); //Заменяем найденный текст ссылками с якорем; lastResFind=textToFind; // сохраняем фразу для поиска, чтобы в дальнейшем по ней стереть все ссылки window.location = '#'+textToFind;//перемещаем скрол к последнему найденному совпадению } </script> <input type="text" id="text-to-find" value=""> <input type="button" onclick="javascript: FindOnPage('text-to-find'); return false;" value="Искать"/> Исходник примера: http://adatum.ru/2013/04/01/poisk-i-...tml-stranitse/ |
Время: 16:34. |
Время: 16:34.
© OSzone.net 2001-