Что нового

Клик по ссылке, зная только её начало

vadimkou

Новичок
Сообщения
17
Репутация
2
Возможно ли в Autoit реализовать клик по ссылке, зная только её домен?

К примеру, вариант с _IELinkGetCollection работает в том случае, если эта ссылка есть в HTML коде. Например,

Код:
#include <IE.au3>
$P = _IECreate("http://autoit-script.ru/")
    $oLinks = _IELinkGetCollection($P)
    For $oLink In $oLinks
        If StringInStr($oLink.href, "http://www.simplemachines.org/") Then
            _IEAction($oLink, "click")
            _IELoadWait($P)
            Sleep(400)
            EndIf
			Next
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
vadimkou,
Пример сайта с такой ссылкой дайте.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Я так понял никто не знает :smile: А можно отослать клик по определенным координатам в неактивное окно?
Так вам нужен клик по ссылке или клик по координатам?
 

Arei

Скриптер
Сообщения
938
Репутация
115
клик по ссылке, если она генерируется JavaScript.
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Код:
...$Links=_IELinkGetCollection($IEwindow)
...
; так?
...
For $Link in $Links
	If StringInStr($Link.innertext,"Текст") Then
...
; или может так?
...
For $Link in $Links
	If StringInStr($Link.href,"кусок из ссылки") Then

Или подробней расскажи :smile:
 
Автор
V

vadimkou

Новичок
Сообщения
17
Репутация
2
Спасибо за ответы, моя ошибка, не коректно поставлен был вопрос
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
DarWiM,
один небольшой нюанс - такой скрипт находит ссылку куда ВХОДИТ заданный текст (входит в любое место). Нужно акцентировать внимание проверки на начало.
Код:
$nachalo = "Текст"
$Links=_IELinkGetCollection($IEwindow)
For $Link in $Links
    If StringInStr($Link.innertext,$nachalo) = 1 Then
        _IEAction ($Link, "click")
        ExitLoop
    EndIf
Next
 

Arei

Скриптер
Сообщения
938
Репутация
115
А как получить ссылки генерируемые JavaScript?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Вас уже просили дать пример сайта с такими ссылками. :whistle:
 

Arei

Скриптер
Сообщения
938
Репутация
115
меня никто не просил, но любой сайт где есть реклама Google/
 

Arei

Скриптер
Сообщения
938
Репутация
115
спрошу в лоб, как получить сайты генерируемые JavaScript на примере рекламы от Google/
 

focus

Осваивающий
Сообщения
69
Репутация
20
Пример сайта с такими ссылками -> так Вы на нём присутствуете! Примотайте страницу в самый низ. Вот она. Реклама есть, открыть исходный код - рекламы (ссылок) нет! Генерирует JavaScript и отправляет в фрейм. Нужно получить доступ к фрейму. И потом с ним "бороться" . Сохранить сайт с рекламой на жёсткий диск (чтоб более детально разобраться) тже не выходит. Ещё вариант по координатам. Тут более реально.
P.S. DebugBar видит фрейм с рекламой прекрасно.
 
Автор
V

vadimkou

Новичок
Сообщения
17
Репутация
2
Если с этим не судьба, как можно создать массив с ссылками, исходя из первоначального примера? Чтобы можно было обратиться к какой то ссылке конкретно, например, $lin[6] (но не клик по индексу)

Сделал немного топорно, но работает
Код:
#include <IE.au3>
#include <Array.au3>
$oIE = _IECreate("google.ru")
 $oLinks = _IELinkGetCollection($oIE)

$kolvybora = 0
    For $oLink In $oLinks
      If StringInStr($oLink.href,"google.ru") Then
			$kolvybora = $kolvybora +1

EndIf

Next
$estero = 0
DIM $ssylki[$kolvybora]
 For $oLink In $oLinks
      If StringInStr($oLink.href,"google.ru") Then

			$ssylki[$estero]= $oLink.href
			$estero = $estero +1
EndIf
Next
MsgBox(0, "", $ssylki[3])
 

focus

Осваивающий
Сообщения
69
Репутация
20
Попробуйте так
Код:
#include <IE.au3>

$oIE = _IECreate ("http://obkom.net.ua/news/")
$oLinks = _IELinkGetCollection ($oIE)
$iCount = @extended

For $i = 0 To $iCount
     If $i = 11 Then

        ConsoleWrite("All indexes of links on page: [" & $iCount & "]" & @CRLF)
        ConsoleWrite("Index: [" & $i & "] " & $oLinks.item($i).href & @CRLF)

        _IELinkClickByIndex($oIE, $i)
		ConsoleWrite("Referer -> " & _IEPropertyGet($oIE,"referrer") & @CRLF)
		Sleep(5*1000)
     EndIf
Next
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
vadimkou [?]
как можно создать массив с ссылками
Код:
#include <IE.au3>
#include <Array.au3>

$iCount = 0
$oIE = _IECreate('http://autoit-script.ru/')
$oLinks = _IELinkGetCollection($oIE)
If Not @extended Or @error Then
	MsgBox(16, 'Error', '_IELinkGetCollection')
	_IEQuit($oIE)
	Exit
EndIf
Dim $aLink[@extended][3]
For $oLink In $oLinks
	If StringRegExp($oLink.href, 'topic.*msg') And Not StringRegExp($oLink.innertext, '^Re:') Then
		$iCount += 1
		$aLink[$iCount][0] = $oLink.innertext
		$aLink[$iCount][1] = $oLink.href
		$aLink[$iCount][2] = $oLink
	EndIf
Next
If $iCount Then
	ReDim $aLink[$iCount + 1][3]
	$aLink[0][0] = $iCount
	_ArrayDisplay($aLink)
	$iRand = Random(1, $iCount, 1)
	_IEAction($aLink[$iRand][2], 'click')
	If Not @error Then
		MsgBox(64, 'Info', 'Click: ' & $aLink[$iRand][0])
	EndIf
Else
	MsgBox(16, 'Error', 'Error')
	_IEQuit($oIE)
	Exit
EndIf
 
Верх