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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » The requested action with this object has failed.:

Ответить
Настройки темы
The requested action with this object has failed.:

Пользователь


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

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


прога:

берет и экселя значение ссылки , переходит по ней, кликает кнопку "показать номер", копирует значение ссылки, вставляет в ексель, копирует поле с класом person-name , вставляет в ексель.
все просто, но !


PHP код: Выделить весь код

#include <IE.au3>


$oExcel ObjCreate('Excel.Application')
$oExcel.Visible True
$oExcel
.WorkBooks.Open(@ScriptDir '\links.xlsx')

While 
1
   
If WinExists("Internet Explorer"Then
      WinActivate
("Internet Explorer")
      
ControlClick("Internet Explorer""Закрыть программу""Button2")
   EndIf


For 
$i 55 to 1000 Step 1
ConsoleWrite 
$oExcel.Activesheet.Cells($i1).Value )
$link $oExcel.Activesheet.Cells($i1).Value
Sleep
(500)
$sUrl=$link
$oIE
=_IECreate($sUrl,0,0,1,0)
Sleep(2000)
$oLinks=_IETagNameGetCollection($oIE'a')




For 
$oTextArea In $oLinks

    
If StringInStr(_IEPropertyGet($oTextArea'outerhtml'), 'Показать номер'Then
        _IEAction
($oTextArea'click')

         
Sleep(4000)

         
$Var=$oTextArea.href


         $oExcel
.Activesheet.Cells($i,2).Value=$Var

          ExitLoop
              
EndIf
 
Next


$tags 
$oIE.document.GetElementsByTagName("div")
Sleep(2000)
For 
$tag in $tags

       $class_value 
$tag.className

    
If $class_value "person-name" Then
         Sleep
(2000)
        
$oExcel.Activesheet.Cells($i,3).Value=_IEPropertyGet($tag'innertext')
        
ExitLoop

    
EndIf
Next

_IEQuit
($oIE)

Next
Wend 



иногда выпадает ошибка
The requested action with this object has failed.:
$tags = $oIE.document.GetElementsByTagName("div")
$tags = $oIE.document^ ERROR
>Exit code: 1 Time: 180.9

и не понятна причина. уже голову сломал

Отправлено: 21:21, 03-11-2015

 

Аватара для Mike909

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


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

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


интересно посмотреть, а links.xlsx файла нет для примера?

Отправлено: 22:29, 03-11-2015 | #2



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

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


Пользователь


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

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


Вложения
Тип файла: xlsx links.xlsx
(9.5 Kb, 3 просмотров)

есть, вот

Отправлено: 08:17, 04-11-2015 | #3


Пользователь


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

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


Вложения
Тип файла: xlsx links.xlsx
(9.5 Kb, 2 просмотров)

вот

Отправлено: 08:18, 04-11-2015 | #4


Пользователь


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

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


ой, продублировал

Отправлено: 08:18, 04-11-2015 | #5


Аватара для Mike909

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


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

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


Попробуйте этот вариант, поставил разные проверки..
А конкретно Ваша ошибка

$tags = $oIE.document.GetElementsByTagName("div")
$tags = $oIE.document^ ERROR

из-за того что oIE.document не был открыт или с ошибкой ( нет страницы например)
можно еще проверять $oIE на то, что он - объект...

Код
Код: Выделить весь код
#include <IE.au3>


Local $oExcel = ObjGet("", "Excel.Application")

If not IsObj($oExcel) Then
	  $oExcel = ObjCreate('Excel.Application')
EndIf
Sleep(2000)

If IsObj($oExcel) Then

$oExcel.Visible = True
$oExcel.WorkBooks.Open(@ScriptDir & '\links.xlsx')

Sleep(1000)

	
	For $i = 1 to 15 Step 1
	
		If not IsObj($oExcel) Then
			  ConsoleWrite ('Excel not found')
			  ExitLoop
		EndIf
	    
		ConsoleWrite ( $i & ' ' & $oExcel.Activesheet.Cells($i, 1).Value & @LF)
		
		$link = $oExcel.Activesheet.Cells($i, 1).Value		
		$sUrl=$link		
		$oIE=_IECreate($sUrl,0,0,1,1)		
		$oLinks=_IETagNameGetCollection($oIE, 'a')		
		
		For $oTextArea In $oLinks
				
		    If StringInStr(_IEPropertyGet($oTextArea, 'outerhtml'), 'Показать номер') Then
		
		         _IEAction($oTextArea, 'click')
				
		         Sleep(500)
				
		         $Var=$oTextArea.href
		         $oExcel.Activesheet.Cells($i,2).Value=$Var
	
		         ExitLoop
		
		    EndIf
		
		Next
		
	
		$tags = $oIE.document.GetElementsByTagName("div")		
		;Sleep(2000)
		if  IsObj($tags) Then
			For $tag in $tags
		
			    $class_value = $tag.className
		
			    If $class_value = "person-name" Then
			
			        ;Sleep(2000)		
			        $oExcel.Activesheet.Cells($i,3).Value=_IEPropertyGet($tag, 'innertext')		
			        ExitLoop
		
			    EndIf
			
			Next
		EndIf
		_IEQuit($oIE)
		
	Next
	
Else

 ConsoleWrite ("Excel is running." & @LF)
 
EndIf

ConsoleWrite ("Exit au3." & @LF)
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:16, 04-11-2015 | #6


Пользователь


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

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


спасибо.
но теперь это :

PHP код: Выделить весь код

The requested action with this object has failed.:
$tags $oIE.document.GetElementsByTagName("div")
$tags $oIE.documentERROR 

вот вам файл мой(большой). чуть подольше выполняется и падает.
может можно какую-то проверку добавить перед

$oIE.document.GetElementsByTagName("div")

?

добавил if IsObj($oIE) Then ... не помогло

Последний раз редактировалось garanov, 04-11-2015 в 21:44.


Отправлено: 21:25, 04-11-2015 | #7


Пользователь


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

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


Вложения
Тип файла: xlsx links.xlsx
(22.0 Kb, 2 просмотров)

файл links побольше

Отправлено: 21:39, 04-11-2015 | #8


Аватара для Mike909

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


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

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


Вот попробуй такой вариант.
до 100 пробовал, норм.
Скрытый текст

PHP код: Выделить весь код

#include <IE.au3>


_IEErrorNotify(False)

Local $oExcel ObjGet("""Excel.Application")

If 
not IsObj($oExcelThen
      $oExcel 
ObjCreate('Excel.Application')
EndIf
Sleep(2000)

If 
IsObj($oExcelThen

$oExcel
.Visible True
$oExcel
.WorkBooks.Open(@ScriptDir '\links.xlsx')

Sleep(2000)
    
    For 
$i 1 to 15 Step 1
        
    
        
If not IsObj($oExcelThen
              ConsoleWrite 
('Excel not found')
              
ExitLoop
        
EndIf
        
        
ConsoleWrite $i ' ' $oExcel.Activesheet.Cells($i1).Value & @LF)
        
Local $boolIsRealPage False
        $link 
$oExcel.Activesheet.Cells($i1).Value        
        $sUrl
=$link        
        $oIE
=_IECreate($sUrl,1,0,1,0)
        ;
Sleep(200)        
        
$oLinks=_IETagNameGetCollection($oIE'a')    
            
        if 
IsObj($oLinksThen
            
;ConsoleWrite ('links=' $oLinks.Length & @LF)
            ;
Sleep(200)
            For 
$oTextArea In $oLinks
                    
                
If StringInStr(_IEPropertyGet($oTextArea'outerhtml'), 'Показать номер'Then
                  
                     _IEAction
($oTextArea'click')
                    
                     
Sleep(500)
                    
                     
$Var=$oTextArea.href
                     $oExcel
.Activesheet.Cells($i,2).Value=$Var
                     $boolIsRealPage 
True
                     ExitLoop
            
                
EndIf
            
            
Next
        
Else
           
ConsoleWrite ('links no obj' & @LF)            
        EndIf
    
        if 
$boolIsRealPage Then
            $tags 
$oIE.document.GetElementsByTagName("div")        
            if  
IsObj($tagsThen
                
;ConsoleWrite ('tags=' $tags.Length & @LF)
                ;
Sleep(200)
                For 
$tag in $tags
                   
                    $class_value 
$tag.className
            
                    
If $class_value "person-name" Then
                
                        $oExcel
.Activesheet.Cells($i,3).Value=_IEPropertyGet($tag'innertext')        
                        
ExitLoop
            
                    
EndIf
                
                
Next
            
Else
               
ConsoleWrite ('tags no obj' & @LF)
            EndIf
        Else
            
ConsoleWrite ('Bad page - no tel.' & @LF)
        EndIf
        
_IEQuit($oIE)
        
    
Next
    
Else

 
ConsoleWrite ("Excel is running." & @LF)
 
EndIf

ConsoleWrite ("Exit au3." & @LF


Отправлено: 22:44, 04-11-2015 | #9


Пользователь


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

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


PHP код: Выделить весь код

The requested action with this object has failed.:
ConsoleWrite $i ' ' $oExcel.Activesheet.Cells($i1).Value & @LF)
ConsoleWrite $i ' ' $oExcel.ActivesheetERROR 


если убрать ConsoleWrite ( $i & ' ' & $oExcel.Activesheet.Cells($i, 1).Value & @LF)
, то ошибка дальше в $link = $oExcel.Activesheet.Cells($i, 1).Value


что-то все же с $oExcel.Activesheet.Cells($i, 1).Value. может переполняется какая-то память ? какую бы проверку пихнуть туда.ю чтобы в случае ошибки там, он просто проходил дальше.

Отправлено: 08:05, 05-11-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » The requested action with this object has failed.:

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Установка - this application has requested the runtime to terminate it in unusual way ElmandeRRR Microsoft Windows 7 5 04-04-2010 22:10
[решено] Overclocking failed or overvoltage failed при загрузке kos82 Непонятные проблемы с Железом 10 21-09-2009 17:54
[решено] object has failed при отправке на e-mail morgan1991 AutoIt 2 09-04-2009 14:33
V. 5.5/2000/2003 - [решено] Failed to grant permission for DOMAIN\user on this object... solon Microsoft Exchange Server 7 26-11-2008 07:52
ERROR The requested URL could not be retrieved Danieeelll Microsoft Windows NT/2000/2003 7 28-02-2004 16:53




 
Переход