|  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 такого нет.
		 
				__________________ Как только вы проиграете, все ваши прошлые победы забудут. | 
|  |