Что нового

Клик по элементу со смещением.

iwak

Новичок
Сообщения
28
Репутация
0
Здравствуйте. Прошу помощи в реализации следующей задачи.
Нужно выполнить клик по определенному элементу, но со смещением.

Если использовать код:

Код:
$elements = _IETagNameGetCollection($oIE, "element")
For $element In $elements
If IsObj($element)
$element.click() ; or _IEAction($element, "click")
EndIf
Next


То как и положено, происходит клик в левый верхний угол элемента:

fab91437c960.png


А нужно выполнить клик сюда:

db5616a6273b.png



Можно ли выполнить клик по элементу (со смещением)?

Что-то вроде этого:

Код:
$element.click().offset('top: 32, left: 32').


?
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
:rofl: эвент клик не обладает параметрами для клика по координатам в элементе, клик по кружку поизойдёт в любом случии т.к. тут клик передаёться не от положения курсора, а от жёсткого вызова эвента клик
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Нужно вместо метода click() составлять событие MouseEvent
Там можно указать координаты клика. Которые можно получить зная положение элемента на странице через element.getBoundingClientRect()
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
iwak [?]
А нужно выполнить клик сюда
Попробуйте так.
Код:
#include<IE.au3>

Opt("MouseCoordMode", 2)

$oIE = _IECreate("http://yandex.ru/v")
$aPos = ControlGetPos("[REGEXPTITLE: Windows Internet Explorer]", "", "[CLASS:Internet Explorer_Server; INSTANCE:1]")

$oImg = _IEImgGetCollection($oIE, 1)
MouseMove(_PosX($oImg)+($oImg.width/2), _PosY($oImg) + $aPos[1]+($oImg.height/2))
MouseClick("left")

Func _PosY($o_Obj)

   $iTop = 0

   If IsObj($o_Obj.offsetParent) Then
	  While 1
		 $iTop += $o_Obj.offsetTop
		 If Not IsObj($o_Obj.offsetParent) Then
			ExitLoop
         EndIf
            $o_Obj = $o_Obj.offsetParent
	  WEnd
   ElseIf IsObj($o_Obj.y) Then
        $iTop += $o_Obj.y
   EndIf

   Return $iTop

EndFunc ;==>_PosY

Func _PosX($o_Obj)

   $iLeft = 0

   If IsObj($o_Obj.offsetParent) Then
	  While 1
		 $iLeft += $o_Obj.offsetLeft
		 If Not IsObj($o_Obj.offsetParent) Then
			ExitLoop
         EndIf
		 $o_Obj = $o_Obj.offsetParent
	  WEnd
   ElseIf IsObj($o_Obj.x) Then
	  $iLeft += $o_Obj.x
   EndIf

   Return $iLeft
EndFunc ;==>_PosX
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
Я бы посоветовал взглянуть на JS который работает с этим элементом и тупо его вызвать с нужными нам параметрами
 

lesoid

Новичок
Сообщения
4
Репутация
0
winstan сказал(а):
Я бы посоветовал взглянуть на JS который работает с этим элементом и тупо его вызвать с нужными нам параметрами
Очень интересует пример клика по js " Откликнитесь специалисты " можно в л.с. :stars:>>>>>>>>> :beer:
 
Верх