Что нового

[Автоматизация] Существуют ли св-ва у объекта, созданного функцией _IETableGetCollection($oIE)?

vitaliy4us

Новичок
Сообщения
158
Репутация
4
Создаю коллекцию таблиц, имеющихся на странице при помощи скрипта:
Код:
$oTables=_IETableGetCollection($oIE)
 For  $oTable In $oTables
	Local $aTableData = _IETableWriteToArray($oTable)
	_ArrayDisplay($aTableData)
Next

Необходимо отобрать только те таблицы, представленные объектами $oTable, которые соответствуют определенным критериям, например имеют определенное количество столбцов. Существуют ли свойства у объектов $oTable, которыми можно было бы воспользоваться для этих целей?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
vitaliy4us,
Посмотрите в IE.au3 в функции
Код:
_IETableWriteToArray()
как реализован подсчет кол-ва строк и столбцов.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
#include<IE.au3>
#include<Array.au3>

Local $iMyNumCells = 3, $oTable, $iNumCells
Local $oIE = _IECreate('yandex.ru')
Local $oTables =_IETableGetCollection($oIE)
Local $iIndex = @extended

For  $i = 0 To $iIndex -1
	
	$oTable = $oTables($i)
	$iNumCells = $oTable.rows(0).cells.length

	If $iNumCells = $iMyNumCells Then
		ConsoleWrite('The cells in the table: [Index: '& $i &'] [className: ' & $oTable.classname & '] number [ ' & $iNumCells &' ]'& @CRLF)
		Local $aTableData = _IETableWriteToArray($oTable)
		_ArrayDisplay($aTableData)
	EndIf
Next
 

madmasles

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

Local $iNumCells
Local $oIE = _IECreate(@ScriptDir & '\Table.html')
Local $oTable = _IETableGetCollection($oIE, 0)

$oRow = $oTable.rows(0).cells
For $oCell In $oRow
	$iNumCells += $oCell.colSpan
Next
ConsoleWrite('cells:   ' & $iNumCells & @LF)
ConsoleWrite('!cells!: ' & $oRow.length & @LF)



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

OffTopic:
Опять фигня какая-то! Не могу скачать файл, который сам прикрепил!



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

На всякий случай Table.html
Код:
<html>
<head><title>Test</title></head>
<body>
<table rules="all" frame="border" width="100%" cellspacing=0 cellpadding=2>
<tr><td colspan="3" align="center">Время</td></tr>
<tr><td align="center">Час</td><td align="center">Мин</td><td align="center">Сек</td></tr>
<tr><td align="center">17</td><td align="center">07</td><td align="center">24</td></tr>
</table>
</body>
</html>
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
madmasles [?]
Разве в первой строке не бывает объединенных ячеек?
Конечно бывают :smile:

Вопрос был задан следующим образом:
vitaliy4us [?]
например имеют определенное количество столбцов. Существуют ли свойства у объектов $oTable, которыми можно было бы воспользоваться для этих целей?
Поэтому я показал пример как можно узнать
количество столбцов
.
Вот ответ на ваш вопрос :smile:
Код:
#include<IE.au3>

Local $iMyNumCells = 2, $oTable, $iNumCells
Local $oIE = _IECreate(@ScriptDir & '\table_test.html')
Local $oTables =_IETableGetCollection($oIE)
Local $iIndex = @extended

For  $oTable In $oTables
	ConsoleWrite('TABLE > [uniqueid="' & _IEPropertyGet($oTable, 'uniqueid') &'" ')
	$iNumRows = $oTable.rows.length
	
	ConsoleWrite(' numrows="' & $iNumRows & '"]' & @CRLF)
	
	For $i = 0 To $iNumRows - 1
		$oCells = $oTable.GetElementsByTagName("td" )
		$iNumCells = $oTable.rows($i).cells.length
		If $oCells($i).colSpan  > 1 Then
			ConsoleWrite('[numcells="' & $iNumCells & '"; colspan="' & $oCells($i).colSpan & '"]' & @CRLF)
		ElseIf $oCells($i).rowSpan  > 1 Then
			ConsoleWrite('[numcells="' & $iNumCells & '"; rowspan="' & $oCells($i).rowSpan & '"]' & @CRLF)
		Else
			ConsoleWrite('[numcells="' & $iNumCells &'"]' & @CRLF)
		EndIf
	Next
	ConsoleWrite(@CRLF)
Next

Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>Tables</title>
	</head>
	<body>

	<table width="200" border="1" align="center" cellpadding="4" cellspacing="0">
		<tr> 
			<td colspan="2" bgcolor="#FBF0DB">Ячейка 1</td>
		</tr>
		<tr> 
			<td>Ячейка 1</td>
			<td>Ячейка 2</td>
		</tr>
		<tr> 
			<td>Ячейка 1</td>
			<td>Ячейка 2</td>
		</tr>
		<tr> 
			<td>Ячейка 1</td>
			<td>Ячейка 2</td>
		</tr>
	</table>
	</br>
	<table width="200" border="1" align="center" cellpadding="4" cellspacing="0">
		<tr> 
			<td rowspan="4" bgcolor="#FBF0DB">Ячейка 1</td>
			<td>Ячейка 1</td>
		</tr>
		<tr> 
			<td>Ячейка 1</td>
		</tr>
		<tr> 
			<td>Ячейка 1</td>
		</tr>
		<tr> 
			<td>Ячейка 1</td>
		</tr>
	</table>
	</body>
</html>


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

OffTopic:
madmasles [?]
Опять фигня какая-то! Не могу скачать файл, который сам прикрепил!
Аналогичная ситуация: "Вы не можете зайти в этот раздел" :smile:
 
Верх