Что нового

[Сеть, интернет] Как нажать на кнопку вида javascript

JIereHga2010

Новичок
Сообщения
68
Репутация
0
Всем доброго времени суток Ув. форумчане :IL_AutoIt_1:
Спасибо Вам за помощь в моем тупорылом вопросе :stars:
Но все же:
Как выполнить следующее:
Имеется сайт http://smofast.com
Логин: [email protected]
Пароль: d123456
Хочу написать к нему програмульку типа БОТа
Но вот наткнулся на неприятность :scratch:
На страничке: http://smofast.com/p.php?p=vk_frend находятся кнопки Добавить.
Если просмотреть код этих кнопок, то они имеют вид:
Код:
<a href="javascript:void(0);" onclick="ModulePopup('2194','id153568667','VK','4','1');" class="followbutton_vip" style="font-size:11px;font-family:Tahoma">Добавить</a>
Код:
<a href="javascript:void(0);" onclick="ModulePopup('2192','id229427120','VK','4','1');" class="followbutton_vip" style="font-size:11px;font-family:Tahoma">Добавить</a>
Код:
<a href="javascript:void(0);" onclick="ModulePopup('2199','id273631358','VK','4','1');" class="followbutton" style="font-size:11px;font-family:Tahoma">Добавить</a>
Вот, как мне заставить мой скриптик нажимать на эти кнопки поочереди? :whistle:
Пробовал так:
Код:
$Url = "http://smofast.com/p.php?p=vk_frend"
$oIE= _IECreate ($URL,0,1,1,1)
$Buttons = _IETagNameGetCollection($oIE, "a")
   For $Button In $Buttons
	 $Button.innerText == "Добавить" Then
		 _IEAction($Caphca, "click")

   Next

Результата нет. :stars:
Может у кого есть что подсказать :'(
Прошу кирпичами не закидывать, я еще жить хочу :(
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: [Сеть, интернет] "Нажми на кнопку - получишь результат... И твоя мечта осуществится..."

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[Сеть, интернет] "Нажми на кнопку - получишь результат... И твоя мечта осуществится..."" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.
 

fortages

Новичок
Сообщения
81
Репутация
3
javascript:void(0)?
Не уверена конечно на 100%, но когда искала решение своей проблемы (тоже с js кнопкой), попадался такой код
Код:
$oIE = _IEAttach("","URL")
$oLinks = _IELinkGetCollection ($oIE)
$iNumLinks = @extended
For $i=0 to ($iNumLinks - 1)
    $oLink = _IELinkGetCollection($oIE,$i)
    If $oLink.href = "javascript:void(0);" Then
        _IELinkClickByIndex($oIE,$i )
        Exit
        EndIf

Next

Мало ли, вдруг это то, что нужно. (английский текст)http://www.autoitscript.com/forum/topic/115049-clicking-java-link-in-ie/
 
Автор
J

JIereHga2010

Новичок
Сообщения
68
Репутация
0
Спасибо, щас твой код попробую :ok:
А еще подходит вот этот:
Код:
$Url = "http://smofast.com/p.php?p=vk_frend"
$oIE= _IECreate ($URL,0,1,1,1)
$oButtons = _IETagNameGetCollection($oIE, "a")
For $oButton In $oButtons
   If $oButton.ClassName == "followbutton" Then
      _IEAction($oButton, "click")
      _IELoadWait($oIE)

      EndIf
   Next





Добавлено:
Сообщение автоматически объединено:

fortages сказал(а):
javascript:void(0)?
Не уверена конечно на 100%, но когда искала решение своей проблемы (тоже с js кнопкой), попадался такой код
Код:
$oIE = _IEAttach("","URL")
$oLinks = _IELinkGetCollection ($oIE)
$iNumLinks = @extended
For $i=0 to ($iNumLinks - 1)
    $oLink = _IELinkGetCollection($oIE,$i)
    If $oLink.href = "javascript:void(0);" Then
        _IELinkClickByIndex($oIE,$i )
        Exit
        EndIf

Next

Мало ли, вдруг это то, что нужно. (английский текст)http://www.autoitscript.com/forum/topic/115049-clicking-java-link-in-ie/

К сожалению, :'( это не помогло, действий никаких не происходит... А вот было бы очень здорово если б мжно было ссылки повытаскивать с этих кнопок.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
JIereHga2010 [?]
Но тут загвоздочка, начинают нажиматься сразу ВСЕ кнопки Добавить....
Попробуй так:
Код:
;...
$oLinks = _IETagNameGetCollection($oIE, "a")
If IsObj($oLinks) Then
	For $oLink In $oLinks
		If $oLink.ClassName == "followbutton" Then
			Switch $oLink.getAttribute("onclick")
				Case _
						"ModulePopup('2194','id153568667','VK','4','1');", _
						"ModulePopup('2192','id229427120','VK','4','1');", _
						"ModulePopup('2199','id273631358','VK','4','1');"
					_IEAction($oLink, "click")
					_IELoadWait($oIE)
			EndSwitch
		EndIf
	Next
EndIf
;...
 
Автор
J

JIereHga2010

Новичок
Сообщения
68
Репутация
0
Таксь ребят, смотрите что происходит:
При выполнении этого скрипта:
Код:
$Url = "http://smofast.com/p.php?p=vk_frend"
$oIE= _IECreate ($URL,0,1,1,1)
$oButtons = _IETagNameGetCollection($oIE, "a")
For $oButton In $oButtons
   If $oButton.ClassName == "followbutton" Then
      _IEAction($oButton, "click")
      _IELoadWait($oIE)
;~ 	  Button_sign ($oIE)
   EndIf
   Next


Кнопка Добавить нажимается, но выскакивает новая вкладка с ВКстраницей того, кого нужно добавить.
У меня имелся для таких целей кодик:
Код:
Func Button_sign ($oIE) ;НАЖАТЬ КНОПКУ "ПОДПИСАТЬСЯ"
$oButtons = _IETagNameGetCollection($oIE, "button")
For $oButton In $oButtons
   If $oButton.innerText == "Добавить в друзья" Then
        _IEAction($oButton, "click")
   EndIf
Next
EndFunc

А вот вся дилемма в том, что $oIE в новой вкладке для функции Button_sign ($oIE) неизвестен. Кто помнит как его получить?


Добавлено:
Сообщение автоматически объединено:

Тему закрываю, т.к. это уже новый вопрос будет :scratch:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
JIereHga2010 [?]
Может у кого есть что подсказать
Код:
; предполагается, что страница уже открыта
$oIE = _IEAttach('http://smofast.com/p.php?p=vk_frend', 'url')

$aLinks = _IELinkGetCollection($oIE)
For $aLink In $aLinks
   If ($aLink.className == 'followbutton_vip') Or ($aLink.className == 'followbutton') Then

	  $sFunction = $aLink.getAttributeNode('onclick').nodeValue
	  $sID = StringRegExpReplace($sFunction, '.*(id\d+).*', '$1')

	  $oIE.document.parentWindow.execScript("" & StringFormat("setTimeout(function(){%s},1)", $sFunction) & "")
	  Do
		 $oIE = _IEAttach("" & StringFormat("http://vk.com/%s", $sID) & "", "url")
		 Sleep(1000)
	  Until IsObj($oIE)
	  MsgBox(0,_IEPropertyGet($oIE, 'title'), 'Тут добавляем в друзья')
	  ExitLoop
   EndIf
Next
 
Автор
J

JIereHga2010

Новичок
Сообщения
68
Репутация
0
Что то сдесь не так, но не могу понять что.
Вот использую Ваш код:

Код:
$Url = "http://smofast.com/p.php?p=vk_frend"
$oIE= _IECreate ($URL,0,1,1,1)
; предполагается, что страница уже открыта
$oIE = _IEAttach('http://smofast.com/p.php?p=vk_frend', 'url')

$aLinks = _IELinkGetCollection($oIE)
For $aLink In $aLinks
   If ($aLink.className == 'followbutton_vip') Or ($aLink.className == 'followbutton') Then

      $sFunction = $aLink.getAttributeNode('onclick').nodeValue
      $sID = StringRegExpReplace($aLink.getAttributeNode('onclick').nodeValue, '.*(id\d+).*', '$1')

      $oIE.document.parentWindow.execScript("" & StringFormat("setTimeout(function(){%s},1)", $sFunction) & "")
      Do
         $oIE = _IEAttach("" & StringFormat("http://vk.com/%s", $sID) & "", "url")
         Sleep(1000)
      Until IsObj($oIE)
      MsgBox(0,_IEPropertyGet($oIE, 'title'), 'Тут добавляем в друзья')
      ExitLoop
   EndIf


В первый раз высветилось сообщение
Код:
MsgBox(0,_IEPropertyGet($oIE, 'title'), 'Тут добавляем в друзья')
, а дальше через раз... И скрипт висит в ожидании. С чем это может быть связано?? Все копии IE закрыты.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
JIereHga2010 [?]
Но все же от описания не отказался бы.
Находим нужные нам значения классов.
Код:
If ($aLink.className == 'followbutton_vip') Or ($aLink.className == 'followbutton') Then

Получаем функцию.
Код:
$sFunction = $aLink.getAttributeNode('onclick').nodeValue

Получаем из функции ID "друга".
Код:
$sID = StringRegExpReplace($sFunction, '.*(id\d+).*', '$1')

Выполняем функцию.
Код:
$oIE.document.parentWindow.execScript("" & StringFormat("setTimeout(function(){%s},1)", $sFunction) & "")

Ждём появления нужного окна.
Код:
Do
   $oIE = _IEAttach("" & StringFormat("http://vk.com/%s", $sID) & "", "url")
   Sleep(1000)
Until IsObj($oIE)

После появления нужного окна, делаем то, что хотели.


Добавлено:
Сообщение автоматически объединено:

JIereHga2010 [?]
В первый раз высветилось сообщение
Это заглушка! Я ведь ни сном ни духом, что вы там собираетесь делать!
Код:
; предполагается, что страница уже открыта
$oIE = _IEAttach('http://smofast.com/p.php?p=vk_frend', 'url')

$aLinks = _IELinkGetCollection($oIE)
For $aLink In $aLinks
   If ($aLink.className == 'followbutton_vip') Or ($aLink.className == 'followbutton') Then

	  $sFunction = $aLink.getAttributeNode('onclick').nodeValue
	  $sID = StringRegExpReplace($sFunction, '.*(id\d+).*', '$1')

	  $oIE.document.parentWindow.execScript("" & StringFormat("setTimeout(function(){%s},1)", $sFunction) & "")
	  Do
		 $oIE2 = _IEAttach("" & StringFormat("http://vk.com/%s", $sID) & "", "url")
		 Sleep(1000)
	  Until IsObj($oIE2)
	  ; Тут делаете то что вам нужно!
	  Sleep(3000)
	  _IEQuit($oIE2) ; удаляем окно
	  Sleep(3000)
	  $oIE2 = 0 ; удаляем объект
   EndIf
   ; весь процесс - заново
Next
 
Автор
J

JIereHga2010

Новичок
Сообщения
68
Репутация
0
Капец.... :stars: :stars: :stars:
После часового мучения над Вашим кодом и проверки значения каждого выражения я наконец понял, что в нем нетак :stars: :stars:
Код:
Do
   $oIE = _IEAttach("" & StringFormat("http://vk.com/%s", $sID) & "", "url") ; Вот в этом месте вместо http://vk.com/ надо писать https://vk.com/
   Sleep(1000)
Until IsObj($oIE)

:stars: :stars: :stars: :stars:
Иначе скрипт зависает и не может найти окно!!!


Добавлено:
Сообщение автоматически объединено:

И всеравно СПАСИБО ВАМ ОГРОМНОЕ. Я таких кодов даже не видел :IL_AutoIt_1:
Теперь буду знать что так тоже можно :ok:
 
Верх