Что нового

Выбор ссылки для нажатия по html коду

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Доброго времени суток :thumbs_up:
Есть страница. На ней код:
Код:
<div class="r"><img class="m" src="img/dollar.png" width="16" height="16" alt="*"/> <a href="warehouse_it.shtml?lan=ru&amp;id=6494075">Продать</a> <span class="o">&#187;</span> Анютины Глазки <span class="o">(185 шт.)</span> за <img class="m" src="img/money.png" width="16" height="16" alt="m"/> 4995</div>
<form action="warehouse_it.shtml?lan=ru&amp;id=6494075" method="POST"><div class="s">
<input type="text" name="drop" value="1" size="4" maxlength="4" style="padding:1px;"/><input type="submit" style="margin-left:1px;padding:1px;" value="Продать"/>
</div></form><div class="r"><img class="m" src="img/dollar.png" width="16" height="16" alt="*"/> <a href="warehouse_it.shtml?lan=ru&amp;id=6653322">Продать</a> <span class="o">&#187;</span> Гибискус <span class="o">(3240 шт.)</span> за <img class="m" src="img/money.png" width="16" height="16" alt="m"/> 372600</div>
<form action="warehouse_it.shtml?lan=ru&amp;id=6653322" method="POST"><div class="s">
<input type="text" name="drop" value="1" size="4" maxlength="4" style="padding:1px;"/><input type="submit" style="margin-left:1px;padding:1px;" value="Продать"/>
</div></form><div class="r"><img class="m" src="img/dollar.png" width="16" height="16" alt="*"/> <a href="warehouse_it.shtml?lan=ru&amp;id=6634410">Продать</a> <span class="o">&#187;</span> Ландыши <span class="o">(540 шт.)</span> за <img class="m" src="img/money.png" width="16" height="16" alt="m"/> 18360</div>
<form action="warehouse_it.shtml?lan=ru&amp;id=6634410" method="POST"><div class="s">
<input type="text" name="drop" value="1" size="4" maxlength="4" style="padding:1px;"/><input type="submit" style="margin-left:1px;padding:1px;" value="Продать"/>
</div></form>
Вопрос, как нажать в IE на "Продать" возле "Гибискуса" с условием, что ссылка изменяется после каждой продажи?
Знаю, что скорее всего через _IEBodyReadHTML, но как организовать не понимаю
 
Автор
DarWiM

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Написал такой вариант, но почему-то не работает..
Код:
$HTML=_IEBodyReadHTML($oIE)
$hHTML=StringRegExp($HTML,'(?i)<a href="(.*?)">Продать</a> <span class="o">»</span> Гибискус <span class="o">',3)
For $HTML In $hHTML
	MsgBox(0,"",$HTML)
Next


А если так, то выводит текст всей страницы
Код:
$HTML=_IEBodyReadHTML($oIE)
$hHTML=StringRegExp($HTML,'(?i)<a href="(.*?)">Продать</a> <span class="o">»</span> Гибискус <span class="o">',3)
;~ For $HTML In $hHTML
	MsgBox(0,"",$HTML)
;~ Next
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
может так
Код:
$HTML=_IEBodyReadHTML($oIE)
$r=StringRegExp($HTML,'(?sm)<a href="(.*?)".*?Продать.*?Гибискус',3)
MsgBox(0,'',$r[0])
 
Автор
DarWiM

DarWiM

Продвинутый
Сообщения
527
Репутация
90
sngr
Да, спасибо, работает.

Но это находит ссылку, а как по ней кликнуть функцией _IEClickByText?
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$HTML=_IEBodyReadHTML($oIE)
$r=StringRegExp($HTML,'(?sm)<a href="(.*?)".*?Продать.*?Гибискус',3)
_IELinkClickByText($oIE,$r[0])
 
Автор
DarWiM

DarWiM

Продвинутый
Сообщения
527
Репутация
90
sngr
Но $r содержит ссылку, а не текст ссылки.. Или я не прав?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
DarWiM,
Попробуйте так.
Код:
#include <IE.au3>

$sUrl = 'http://...'
$sSearch = 'Гибискус'
$oIE = _IECreate($sUrl)
$oDivs = _IETagNameGetCollection($oIE, 'div')
If @error Then
	MsgBox(16, 'Error', '_IETagNameGetCollection')
	Exit
EndIf
For $oDiv In $oDivs
	If $oDiv.classname == 'r' Then
		If StringInStr($oDiv.innertext, $sSearch) Then
			$oLink = _IETagNameGetCollection($oDiv, 'a', 0)
			If Not @error Then
				_IEAction($oLink, 'click')
				_IELoadWait($oIE)
				ExitLoop
			EndIf
		EndIf
	EndIf
Next
 
Автор
DarWiM

DarWiM

Продвинутый
Сообщения
527
Репутация
90
madmasles
Да, работает)) Спасибо за помощь)) Я ваш фэн :laugh:
 
Автор
DarWiM

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Появилась другая проблема. Если прошлый пример я хорошенько отработал, то теперь просто не знаю что можно сделать... :'(
Код:
<table>
            <tr>
              <td><img alt="" src="/img/items_use/r1m.jpg" width="33" height="33" /></td>
              <td class="top">
                <div class="item_name">свинец</div>
                <div>
                  <a href="/knacker/sell_confirm/1?r=1329496434.5053" class="green">продать</a>
                  30 шт. за <img src="/img/icons/p5.png" width="11" height="12" alt="[з]" />30                 </div>
              </td>
            </tr>
          </table>
                      <p class="space"></p>
          <table>
            <tr>
              <td><img alt="" src="/img/items_use/r2m.jpg" width="33" height="33" /></td>
              <td class="top">
                <div class="item_name">медная руда</div>
                <div>
                  <a href="/knacker/sell_confirm/2?r=1329496434.5053" class="green">продать</a>
                  15 шт. за <img src="/img/icons/p5.png" width="11" height="12" alt="[з]" />30                 </div>
              </td>
            </tr>
          </table>
                      <p class="space"></p>
          <table>
            <tr>
              <td><img alt="" src="/img/items_use/r3m.jpg" width="33" height="33" /></td>
              <td class="top">
                <div class="item_name">железная руда</div>
                <div>
                  <a href="/knacker/sell_confirm/3?r=1329496434.5053" class="green">продать</a>
                  10 шт. за <img src="/img/icons/p5.png" width="11" height="12" alt="[з]" />30                 </div>
              </td>
            </tr>
          </table>
проблема та же, нужно кликнуть по ссылке
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Попробуй:
Код:
_IELinkClickByText($oIE, 'продать')
 
Автор
DarWiM

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Zaramot
Это конечно хорошо, но обратите внимание на саму проблему и предыдущие посты... На страничке несколько ссылок и все подписаны "продать"... Поэтому просто клик по тексту не подходит((

Подправил код предыдущего сообщения
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
DarWiM,
Код:
#include <IE.au3>

$sUrl = 'http://...'
$sSearch = 'медная руда'
$oIE = _IECreate($sUrl)
$oTables = _IETableGetCollection($oIE)
If @error Then
	MsgBox(16, 'Error', '_IETableGetCollection')
	Exit
EndIf
For $oTable In $oTables
	If StringInStr($oTable.innertext, $sSearch) Then
		$oLink = _IETagNameGetCollection($oTable, 'a', 0)
		If Not @error Then
			_IEAction($oLink, 'click')
			_IELoadWait($oIE)
			ExitLoop
		EndIf
	EndIf
Next
 

gezan1

Новичок
Сообщения
47
Репутация
0
Прошу прощения,
А если бы вместо "медной руды" было бы меняющееся число, тогда как? Выбрать нужное число можно через массив по условию, но вот как выбранный массив привязать к кнопке?
Код:
_IEAction($oLink, 'click')
 
Автор
DarWiM

DarWiM

Продвинутый
Сообщения
527
Репутация
90
gezan1
Подробности нужны.. И в отдельную тему!
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Предупреждение
gezan1

За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Модератор.
 
Верх