Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Нужно Кликнуть по тексту в ИЕ (http://forum.oszone.net/showthread.php?t=168697)

Russo 27-02-2010 13:08 1357298

Нужно Кликнуть по тексту в ИЕ
 
Вложений: 1
Нужна помощь! нужно кликнуть по тексту (см. приложеное изображение)
_IELinkClickByText не подходит по причине, что текст не единственный на странице,
_IELinkClickByIndex не подходит по причине, что index может меняться, в моем случае если очистить форму "Members you have blocked" или добавить в "Members you were blocked"

форма куда следует нажать имеет след. вид
[code]
<!-- start box Smiles sent to -->
<div class="DesignBox">
<h2 class="DesignBoxTitle">Smiles sent to</h2>
<table width=100% cellpadding="0" cellspacing="1" align=center border=0>
<tr><td>&nbsp;</td></tr>
<tr>
<form method=post name=form_kiss_del1>
<td width=50% valign=top align=center>
<table width=100% cellspacing=0 cellpadding="0" class=text align=center>
<tr>
<td class="head_td">
<table cellspacing=0 cellpadding="0" class=small2 width="100%">
<td>&nbsp;</td>
<td><img src="/templates/tmpl_nc/images_nc/out.gif"></td>
<td class=panel>&nbsp;Members you have sent smiles: 1</td>
</table>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="1" class="small" width="100%" align="center">
<tr class=table>
<td class="cc_td_1_border"><input type="checkbox" name="1000102258-1000221077"></td>
<td class="cc_td_2_border"><a href="profile.php?ID=1000221077">01479love</a></td>
<td align=right class="cc_td_2_border">1 time(s)</td>
<td align=center class="cc_td_2_border">2009-12-09 08:24:20</td>
<td align=center class="cc_td_3_1_border"><a href="vkiss.php?sendto=1000221077"><img border=0 src="/templates/tmpl_nc/images_nc/kiss.gif" alt="send smile"></td>


</tr>
</table>

<table class=text align=left>
<tr><td>&nbsp;<a href="javascript: void(0);" onclick="setCheckboxes( 'form_kiss_del1', true ); return false;">Check all</a> / <a href="javascript: void(0);" onclick="setCheckboxes( 'form_kiss_del1', false ); return false;">Uncheck all</a>&nbsp;</td><td align=left><input class=no type=submit name="submit_form_kiss_del1" value="Delete"></td></tr>
</table></td>
</form>
[code]

Sp01LeR 27-02-2010 21:00 1357629

Код:

$oIE = _IECreate("http://www.сайт.ру/страница-c-формой.html")

$textString = "Check all"//текст ссылки
$formname = "form_kiss_del1"//имя формы
_IELinkClickByText($oIE, $textString)
$err_click_link = @error
Sleep(375)
_IEFormSubmit($oForm)
$err_click_submit = @error
ConsoleWrite("ClickLink error=" & $err_click_link & @CRLF)
ConsoleWrite("ClickSubmit error=" & $err_click_submit & @CRLF)

вот проверяй - должно сработать...

Russo 01-03-2010 09:49 1358617

Спасибо за помощь и потраченное время, но что-то пока никак. может я что-то не то делаю....

Sp01LeR 01-03-2010 21:03 1359076

сохрани страницу с формой на диск и залей куданибудь...

Russo 02-03-2010 09:52 1359321

http://rapidshare.com/files/357736656/Desktop.zip.html

madmasles 02-03-2010 11:14 1359366

Russo,
У меня получилось с Вашей страницей так:
Код:

#include <IE.au3>

$oIE = _IECreate ("Ваш сайт")
$oForm = _IEFormGetObjByName ($oIE, "submit_form_kiss_del1")
$colForms = _IEFormGetCollection($oIE)
$iForm = 0
For $oForm In $colForms
    $colInputs
= _IETagNameGetCollection($oForm, "input")
    $iInput = 0
    For $oInput In $colInputs
        If $oInput.type = "checkbox" Then
            _IEAction($oInput, 'click')
        EndIf
        $oInput +=1
    Next
    $oForm += 1
Next
_IEFormSubmit($oForm)

Т.е. сначала отмечаем все чекбоксы, потом нажимаем на нужную кнопку.
PS
У меня на Вашей странице, после клика на кнопке Delete, снимаются все чекбоксы.

Russo 02-03-2010 11:56 1359398

спасибо за помощь! действительно нажимает на все чекбоксы, но вот кликать не хочет....:(

madmasles 02-03-2010 12:59 1359433

Russo,
Попробуйте убрать $oForm = _IEFormGetObjByName ($oIE, "submit_form_kiss_del1"), и заменить _IEFormSubmit($oForm) на :
Код:

For $oForm In $colForms
    $colInputs
= _IETagNameGetCollection($oForm, "input")
    $iInput = 0
    For $oInput In $colInputs
        If $oInput.type = "submit" And $oInput.name = "submit_form_kiss_del1" And _
                $oInput.value = "Delete" Then
            _IEAction($oInput, 'click')
        EndIf
        $oInput += 1
    Next
    $oForm += 1
Next

У меня в той странице, которую Вы залили, работает и так, и так.

Russo 02-03-2010 13:05 1359442

добавил в конце


$oInputs = _IETagNameGetCollection ($oIE, 'input')
For $oInput In $oInputs
If $oInput.type == 'submit' AND $oInput.name == "submit_form_kiss_del1" Then
_IEAction($oInput, 'click')
EndIf
Next


получилось
Всем спасибо за помощь!
Решено!


Время: 21:46.

Время: 21:46.
© OSzone.net 2001-