Что нового

[Сеть, интернет] Нажатие кнопки в IE, если есть только класс и текст.

Juffin

Новичок
Сообщения
3
Репутация
0
Доброго времени суток. Не нашел решения на форуме, может быть плохо искал. Помогите пожалуйста.
Есть вот такая кнопка:
Код:
<div class="pmBox_head">
   <div class="re">
      <div class="mi">
         <div class="pmBox_arrow"></div>
         <div class="pmBox_header">Оплата</div>
         <div class="ico_Cash"></div>
         <div class="pmBox_check"></div>
      </div>
   </div>
</div>
Нужно на нее нажать.
pmBox_arrow, pmBox_header и т.д. это составные части кнопки. Нажимать можно на любую из них.

Код:
_IELinkClickByText
Не срабатывает
Код:
_IEGetObjById
_IEGetObjByName
Использовать эти функции, чтобы потом кликнуть по элементу тоже не получается, ибо нет ни имени ни id.
Предполагаю, что нужно как-то выбрать все элементы определенного класса, и потом циклом их перебрать.. И нажать :smile: Только вот как это сделать не понимаю.
Жаль нет русской справки по IE.au3.
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Код:
Func _IELinkClickByClass($_oIE,$_sClassName)
	$_oLinks = _IELinkGetCollection($_oIE)
	For $_oLink In $_oLinks
		If StringInStr($_oLink.classname, $_sClassName) Then
			$_oLink.click
			ExitLoop
		EndIf
	Next
EndFunc

Также можно сделать для себя _IEGetObjByClass и т.д.


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

В данном примере нужно написать функцию для объекта по классу, т.к. <div> - не ссылка...
 
Автор
J

Juffin

Новичок
Сообщения
3
Репутация
0
Нет, так не получается. :scratch:
нужно написать функцию для объекта по классу
Это как?


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

Огромное спасибо, DarWiM. Навел на верные мысли :smile:
Решил следующим образом:

Код:
$sClassName = 'pmBox_header'
$oLinks = _IEGetObjByClass ($oIE, $sClassName)
_IEAction($oLinks, "click")

Func _IEGetObjByClass(ByRef $o_object, $s_Class, $i_index = 0)
    If Not IsObj($o_object) Then
        __IEErrorNotify("Error", "_IEGetObjByClass", "$_IEStatus_InvalidDataType")
        SetError($_IEStatus_InvalidDataType, 1)
        Return 0
    EndIf
    ;
    If Not __IEIsObjType($o_object, "browserdom") Then
        __IEErrorNotify("Error", "_IEGetObjByClass", "$_IEStatus_InvalidObjectType")
        SetError($_IEStatus_InvalidObjectType, 1)
        Return 0
    EndIf
    ;
    Local $i_found = 0
    ;
    $o_tags = _IETagNameAllGetCollection($o_object)
    For $o_tag In $o_tags
        If String($o_tag.className) = $s_Class Then
            If ($i_found = $i_index) Then
                SetError($_IEStatus_Success)
                Return $o_tag
            Else
                $i_found += 1
            EndIf
        EndIf
    Next
    ;
    __IEErrorNotify("Warning", "_IEGetObjByClass", "$_IEStatus_NoMatch", $s_Class)
    SetError($_IEStatus_NoMatch, 2)
    Return 0
EndFunc   ;==>_IEGetObjByClass
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Juffin
Поправка
Код:
$oLink = _IEGetObjByClass ($oIE, $sClassName)
_IEAction($oLink, "click")
 

RN851xE

Новичок
Сообщения
6
Репутация
0
Кнопочка:
Код:
<div id="friend_status">
<div class="profile_action_btn">
<div class="button_wide button_blue">
<button onclick="return Profile.toggleFriend(this, 'c9f170c10a831550f0', 1, event)">Добавить в друзья</button>
</div>
Пробовал кликнуть так:
Код:
_IELoadWait($oIE)
$s_Class="button_wide button_blue"
$_sInnerText="Добавить в друзья"
$o_tags = _IETagNameAllGetCollection($oIE)
    For $o_tag In $o_tags
        If String($o_tag.className) = $s_Class Then
        ToolTip("класс найден: "&$o_tag) ; $o_tag тултипом не отображается
		Sleep(2000)
		   If StringInStr($o_tag.innertext, $_sInnerText)Then
           ToolTip("текст в классе найден: "&$o_tag) ; $o_tag тултипом не отображается
		   Sleep(2000)
           ; пробуем кликнуть:
           $o_tag.click ; не кликает
		   _IEAction($o_tag, "click") ; не кликает
		   _IELinkClickByText($o_tag, $_sInnerText) ; не кликает
	       EndIf
	    EndIf
    Next
Буду признателен за любую помощь. Пока что вывожу на гуи и кликаю пиксельсерчем, это варварство. :'(
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
RN851xE
OffTopic:
Вам в другую тему...
 

eropov

Jury
Сообщения
195
Репутация
25
Juffin
Как вы видите там, на кнопке, есть обработчик onclick, попробуйте это обработчик вызвать, так:
Код:
$oIE.document.parentWindow.execScript("setTimeout(function(){return Profile.toggleFriend(this, 'c9f170c10a831550f0', 1, event)},1)")
 
Верх