Показать полную графическую версию : [решено] [Решено]_IEFormElementRadioSelect его использование в нестандартных ситуаиях
Здравствуйте, подскажите плз как выделить нежный 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."
Заранее благодарен.
DjinnKo, как насчет полного HTML/линка + подробное описание того, ЧТО нужно получить в результате?
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 выбрать ответ и отправить форму...
чет регулярки худо работают в 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)
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>. Мож, там какие особенности ...
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.
Еще раз всем сенкс :)
и подскажите плз как выбрать вариант любой КРОМЕ того который нашелся с помощью регулярного выражения ?
нужно сохранить все названия »аналогично:
$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
как выбрать вариант любой КРОМЕ того который нашелся »
не понял вопрос - первый попавшийся что-ли?... есть массив ВСЕХ - фильтруйте стандартными средствами
amel27, сенкс, ну вот я знаю как посчету их любой выбрать:
_IEFormElementRadioSelect ($oForm, Random(0,2,1), "quiz_answer", 1, "byIndex")
все, в принципе второй вопрос отпадает после первого вопроса...
у меня тут есть еще 1 проблемка с этой регуляркой... но я сам поразбираюсь чтобы вас не тривожить.. если нет в эту тему напишу.
Большой спасибо Вам :)
Спасибо, вопросов нет :) все решено :)
Всем очень благодарен :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.