Войти

Показать полную графическую версию : [решено] [Решено]_IEFormElementRadioSelect его использование в нестандартных ситуаиях


DjinnKo
11-07-2009, 15:01
Здравствуйте, подскажите плз как выделить нежный radio в IE, если html не стандартный немного:
<td width="10"><input name="quiz_answer" value="7" type="radio"></td>
<td>When a bet would be more than one third of the chips left in your stack.</td>

Получается что:
</td>
<td>


Не позволяет правильно работать с:
_IEFormElementRadioSelect
Пробывал вырезать регулярным выражением:
$regexp = StringRegExp($HTML, 'type=\"radio\">(.*?)' & FileReadLine($file_handle, $k+2), 0)

Не сработало :( подскажите плз, как быть ?

P.S. в FileReadLine($file_handle, $k+2), 0) - находится строка: "When a bet would be more than one third of the chips left in your stack."

Заранее благодарен.

amel27
11-07-2009, 15:53
DjinnKo, как насчет полного HTML/линка + подробное описание того, ЧТО нужно получить в результате?

DjinnKo
11-07-2009, 16:23
DjinnKo, как насчет полного HTML/линка + подробное описание того, ЧТО нужно получить в результате? »

Извините, но полный линк не выйдет, вот щас дам пример и что надо сделать:

<FORM method=post encType=multipart/form-data>
<DIV class=question>
<P><B>Question</B></P></DIV>
<DIV class=answers>
<TABLE cellSpacing=0 cellPadding=5 width="100%" border=0>
<TBODY>
<TR>
<TD width=10><INPUT type=radio value=15 name=quiz_answer></TD>
<TD>You fold.</TD></TR>
<TR>
<TD><INPUT type=radio value=18 name=quiz_answer></TD>
<TD>You bet.</TD></TR>
<TR>
<TD><INPUT type=radio value=3 name=quiz_answer></TD>
<TD>You check.</TD></TR>
<TR>
<TD></TD>
<TD><INPUT type=submit value=Next></TD></TR></TBODY></TABLE></DIV><INPUT type=hidden value=2 name=quiz_action> <INPUT type=hidden value=50778310 name=quiz_aid> </FORM>

Это форма, собственно в ней находятся 3 Radio, мне соответственно надо выделить правильный вариант ответа и отправить форму. (форма в девственном виде)
Я решил сделать чек регуляркой: value=(\d+)\sname=quiz_answer>.*?You check. приблизительно такой регуляркой... но чет регулярки худо работают в autoit... :(
ну а потом с нужным value с помощью _IEFormElementRadioSelect выбрать ответ и отправить форму...

amel27
11-07-2009, 17:43
чет регулярки худо работают в autoit »необоснованный наезд, читайте матчасть... ;)
$sHTML = FileRead("c:\TEST\test.html")
$sText = "You check."
$aVals = StringRegExp($sHTML, "(?im)^" & _
"<TR>[^<]*" & _
"<TD\b[^>]*>[^<]*" & _
"<INPUT\b[^>]*?\bValue=(\d+)[^>]*>[^<]*" & _
"</TD>[^<]*" & _
"<TD\b[^>]*>\Q"& $sText &"\E</TD>[^<]*" & _
"</TR>", 3)

If IsArray($aVals) Then ConsoleWrite("Value: "& $aVals[0] &@CRLF)

proxy
11-07-2009, 17:53
DjinnKo, пример:

Opt('MustDeclareVars', 1)
Opt('TrayIconDebug', 1)

#include <IE.au3>

HotKeySet('{ESC}', '_Pro_Exit'); ESC - закрыть скрипт

Local $oIE, $oForm, $i

$oIE = _IECreate('http://testing.ru/1.htm'); открытие ie окна и старницы 'http://testing.ru/1.htm'
$oForm = _IEFormGetCollection($oIE, 0); поиск и запись в переменную идентификатора (указаетля) первого найденного элемент form на старнице

For $i = 1 To 5
ToolTip('перебор '& $i & ' из 5', 10, 100, 'Выбор radio # 3')
_IEFormElementRadioSelect($oForm, 2, 'quiz_answer', 1, 'byIndex'); выбор радио кнопки с иминем 'quiz_answer' и индексом № 2 (среди всех лементов с иминем 'quiz_answer', этот элемент, по порядку расположения на странице, будет 3-им)
Sleep(1000)

ToolTip('перебор '& $i & ' из 5', 10, 100, 'Выбор radio # 2')
_IEFormElementRadioSelect($oForm, 1, 'quiz_answer', 1, 'byIndex'); выбор радио кнопки с иминем 'quiz_answer' и индексом № 1 (среди всех лементов с иминем 'quiz_answer', этот элемент, по порядку расположения на странице, будет 2-им)
Sleep(1000)

ToolTip('перебор '& $i & ' из 5', 10, 100, 'Выбор radio # 1')
_IEFormElementRadioSelect($oForm, 0, 'quiz_answer', 1, 'byIndex'); выбор радио кнопки с иминем 'quiz_answer' и индексом № 0 (среди всех лементов с иминем 'quiz_answer', этот элемент, по порядку расположения на странице, будет 1-им)
Sleep(1000)
Next

Func _Pro_Exit()
Exit
EndFunc

если html не стандартный немного »
имхо, radio кнопки в полне стандартные ...

DjinnKo, это очень верный и дельный совет:
как насчет полного HTML/линка + подробное описание того, ЧТО нужно получить в результате? »
а под словом полного - имхо, подразумевается весь html код страницы, как миниму от текга <body> и до </body>. Мож, там какие особенности ...

DjinnKo
12-07-2009, 01:18
amel27, ты мне очень помог, сенкс :) все прекрасно работает... я таких регулярок раньше не писал... или синтаксис другой или я не сталкивался просто с таким...

Можете плз еще помочь мне с регуляркой: нужно сохранить все названия, с этого:
<FORM method=post encType=multipart/form-data>
<DIV class=question>
<P><B>Question</B></P></DIV>
<DIV class=answers>
<TABLE cellSpacing=0 cellPadding=5 width="100%" border=0>
<TBODY>
<TR>
<TD width=10><INPUT type=radio value=15 name=quiz_answer></TD>
<TD>You fold.</TD></TR>
<TR>
<TD><INPUT type=radio value=18 name=quiz_answer></TD>
<TD>You bet.</TD></TR>
<TR>
<TD><INPUT type=radio value=3 name=quiz_answer></TD>
<TD>You check.</TD></TR>
<TR>
<TD></TD>
<TD><INPUT type=submit value=Next></TD></TR></TBODY></TABLE></DIV><INPUT type=hidden value=2 name=quiz_action> <INPUT type=hidden value=50778310 name=quiz_aid> </FORM>
нужно сохранить:

You fold.
You bet.
You check.



Еще раз всем сенкс :)

и подскажите плз как выбрать вариант любой КРОМЕ того который нашелся с помощью регулярного выражения ?

amel27
12-07-2009, 08:32
нужно сохранить все названия »аналогично:
$sHTML = FileRead("c:\TEST\test.html")
$aVals = StringRegExp($sHTML, "(?im)^" & _
"<TR>[^<]*" & _
"<TD\b[^>]*>[^<]*" & _
"<INPUT\b[^>]*?\bValue=(\d+)[^>]*>[^<]*" & _
"</TD>[^<]*" & _
"<TD\b[^>]*>([^<]*)</TD>[^<]*" & _
"</TR>", 3)

If IsArray($aVals) Then
For $i=0 To UBound($aVals)-1 Step 2
ConsoleWrite("Value: "& $aVals[$i] &@CRLF)
ConsoleWrite("Text : "& $aVals[$i+1] &@CRLF&@CRLF)
Next
EndIf

как выбрать вариант любой КРОМЕ того который нашелся »
не понял вопрос - первый попавшийся что-ли?... есть массив ВСЕХ - фильтруйте стандартными средствами

DjinnKo
12-07-2009, 12:59
amel27, сенкс, ну вот я знаю как посчету их любой выбрать:
_IEFormElementRadioSelect ($oForm, Random(0,2,1), "quiz_answer", 1, "byIndex")
все, в принципе второй вопрос отпадает после первого вопроса...

у меня тут есть еще 1 проблемка с этой регуляркой... но я сам поразбираюсь чтобы вас не тривожить.. если нет в эту тему напишу.

Большой спасибо Вам :)

DjinnKo
16-07-2009, 18:24
Спасибо, вопросов нет :) все решено :)

Всем очень благодарен :)




© OSzone.net 2001-2012