10.08.2009, 12:07 | #1 |
Участник
|
Уважаемые форумчане, у меня возникла следующая проблема.
Необходимо из Nav открыть интернет-страницу. Для этого создаю переменную Аutomation'Microsoft Internet Controls'.InternetExplorer и пытаюсь использовать ее методы. Проблема возникает при попытке передать на страницу данные из Nav, т.е. appExpl.Document().forms(0).elements(1).value:='XXX'; Ругается на вызов appExpl.Document() Ошибка следующая: "Возвращаемое значение должно использоваться для этой функции" Может кто-то уже сталкивался с этой проблемой и смог ее решить? |
|
10.08.2009, 12:17 | #2 |
Участник
|
Цитата:
Сообщение от natalias
Необходимо из Nav открыть интернет-страницу.
Для этого создаю переменную Аutomation'Microsoft Internet Controls'.InternetExplorer и пытаюсь использовать ее методы. Проблема возникает при попытке передать на страницу данные из Nav, т.е. appExpl.Document().forms(0).elements(1).value:='XXX'; Ругается на вызов appExpl.Document() Ошибка следующая: "Возвращаемое значение должно использоваться для этой функции" Может кто-то уже сталкивался с этой проблемой и смог ее решить? |
|
10.08.2009, 12:24 | #3 |
Участник
|
Отличается тем, что после открытия страницы нужно передать туда данные из Nav (например, авторизироваться).
Именно открытие страницы происходит без проблем. |
|
10.08.2009, 15:50 | #4 |
Участник
|
Вы пошли не тем путем.
Для того, чтобы авторизоваться, не нужно заполнять форму. Необходимо передать необходмые парамеры на страницу, на которой происходит проверка логина и пароля. К примеру. Есть страница для авторизации user.php. На ней 2 поля - UserName и Password При Submit'е формы запускается login.php. Из нава можно попробовать открыть страницу след. образом: login.php?username=ИмяПользователя&password=Пароль Тут параметры страницы совпадают с именами полей на форме user.php Пирмерно так. Если не получится (сам я такого не делал), то рекомендую почитать про http-get и http-post. Возможно, что найдете решение. |
|
20.08.2009, 14:09 | #5 |
Участник
|
Скажите, а кто-нибудь пробовал вытянуть в Навижн что-нибудь из окна браузера?
Как это делается? Я пытался сделать так: Ie.Document.body.innerText где Ie - Automation 'Microsoft Internet Controls'.InternetExplorer ругается на неопределенную переменную body |
|
21.08.2009, 11:52 | #6 |
Участник
|
Страница скорее всего еще не загрузилась, а вы уже пытаетесь получить ее содержимое.
После Navigate SLEEP() на несколько секунд поставьте и проверьте. |
|
21.08.2009, 12:00 | #7 |
Участник
|
Sleep есть. Написано вот так после Navigate
IF Ie.ReadyState<4 THEN REPEAT SLEEP(1000); UNTIL (Ie.ReadyState < 4); Ну у меня вообще не получается скомпилировать модуль с такой строкой txt := FORMAT(Ie.Document.body.innerText; может у кого то есть пример работы с браузером? Заранее благодарен. |
|
21.08.2009, 17:23 | #8 |
Участник
|
Код: IE: Automation 'Microsoft Internet Controls'.InternetExplorer MSHTML: Automation 'Microsoft HTML Object Library'.HTMLDocument HTMLBody: Automation 'Microsoft HTML Object Library'.HTMLBody --------------------- CREATE(IE, TRUE); IE.Navigate('www.ya.ru'); WHILE IE.ReadyState<4 DO SLEEP(10); MSHTML := IE.Document; HTMLBody := MSHTML.body; MESSAGE(HTMLBody.innerText); IE.Quit; CLEAR(MSHTML); CLEAR(IE); |
|
21.08.2009, 17:53 | #9 |
Участник
|
Это работает!
Еще раз большое спасибо! |
|
21.08.2009, 21:36 | #10 |
Administrator
|
настоящее спасибо - плюс к рейтингу
|
|
24.08.2009, 15:14 | #11 |
Участник
|
Разобрался как увеличить рейтинг. Выполнено
|
|
16.10.2013, 13:28 | #12 |
Участник
|
Есть проблема в работе с браузером из Nav.
Существующий код открывает IE, вводит логин и пароль пользователя и клацает по кнопке. Код: iExplorer Automation 'Microsoft Internet Controls'.InternetExplorer HTMLDoc Automation 'Microsoft HTML Object Library'.HTMLDocument HTMLInputElem Automation 'Microsoft HTML Object Library'.HTMLInputElement _________________________________________________________________________________ SiteAdress := WebSetup."Web Site Adress"; UserLogin := WebSetup.Login; UserPassword := WebSetup."Open Password"; CLEAR(iExplorer); IF NOT CREATE(iExplorer, TRUE, TRUE) THEN ERROR(Text005); iExplorer.Visible(TRUE); iExplorer.Navigate(SiteAdress); // open url WHILE iExplorer.Busy DO; // wait for full load HTMLDoc := iExplorer.Document; // copy html page WHILE iExplorer.Busy DO; // wait fo full copy // set login HTMLInputElem := HTMLDoc.getElementById('LoginUserName'); HTMLInputElem.value := UserLogin; // set password HTMLInputElem := HTMLDoc.getElementById('LoginPassword'); HTMLInputElem.value := UserPassword; // enter site HTMLInputElem := HTMLDoc.getElementById('NAV_ENTER'); HTMLInputElem.click; "Не удалось вызвать член getElementByID: Исключение из HRESULT: 0x800A01B6". Кто-нибудь сталкивался с такими вещами?
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
16.10.2013, 15:33 | #13 |
Участник
|
На данный момент удалось найти информацию что дело не в версии IE а в версии ОС: данная ошибка вылетает на машинах под Windows 7/2008, на XP такого нет.
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|