Ein Thema im Forum hat mich auf Idee gebracht, für eine Funktion, die nur eine Zelle einer Tabelle ausließt - hier ist sie:
Spoiler anzeigen
; #FUNCTION# ===================================================================
; Name ..........: _FFTableGetCell
; Description ...: Gets the text or HTML of a table cell
; AutoIt Version : V3.3.0.0
; Syntax ........: _FFTableGetCell(ByRef $Socket, $vTable, $iColumn, $iRow[, $sMode = "index"[, $sReturnMode = "text"[, $bCompress = true]]])
; Parameter(s): .: $Socket - TCP Socket
; $vTable - index (0-n), name
; $iColumn - Column (0-n)
; $iRow - Row (0-n)
; $sMode - Optional: (Default = "index") : index (0-n), name, id
; $sReturnMode - Optional: (Default = "text") : text, html
; $bCompress - Optional: (Default = true) : Removes double withespaces
; Return Value ..: Success - Text or HTML
; Failure - 0
; @ERROR -
; Author(s) .....: Thorsten Willert
; Date ..........: Sat Feb 14 23:00:56 CET 2009
; Related .......: _FFTableWriteToArray
; Example .......: Yes
; ==============================================================================
Func _FFTableGetCell(ByRef $Socket, $vTable, $iColumn, $iRow, $sMode = "index", $sReturnMode = "text", $bCompress = true)
If Not __FFIsSocket($Socket) Then
SetError(__FFError("_FFTableGetCell", $_FF_ERROR_SocketError, $Socket))
Return 0
EndIf
If $sMode = Default Then $sMode = "index"
[/autoit] [autoit][/autoit] [autoit]If Not IsInt($vTable) And $sMode = "index" Then
SetError(__FFError("_FFTableGetCell", $_FF_ERROR_InvalidDataType, $vTable))
Return 0
EndIf
If Not IsInt($iColumn) Then
SetError(__FFError("_FFTableGetCell", $_FF_ERROR_InvalidDataType, $iColumn))
Return 0
EndIf
If Not IsInt($iRow) Then
SetError(__FFError("_FFTableGetCell", $_FF_ERROR_InvalidDataType, $iRow))
Return 0
EndIf
Switch StringLower($sReturnMode)
Case "text"
$sReturnMode = "textContent"
Case "html"
$sReturnMode = "innerHTML"
Case Else
SetError(__FFError("_FFTableGetCell", $_FF_ERROR_InvalidValue, "$sReturnMode: " & $sReturnMode))
Return 0
EndSwitch
Local $sObject = "content.document"
[/autoit] [autoit][/autoit] [autoit]Switch StringLower($sMode)
Case "index"
$sObject &= ".getElementsByTagName('tbody')[" & $vTable & "]"
Case "name"
ContinueCase
Case "id"
$sObject &= ".getElementsByTagName('tbody')['" & $vTable & "']"
Case Else
SetError(__FFError("_FFTableGetCell", $_FF_ERROR_InvalidValue, "$sMode: " & $sMode))
Return 0
EndSwitch
Local $sRndErr = "_FFTableGetCell_Err:" & Random(10000,99999,1)
Local $sElements = StringFormat("getElementsByTagName('tr')[%i].getElementsByTagName('td')[%i]",$iRow,$iColumn)
Local $sCommand = StringFormat("try{with(%s){(%s != null ? %s.%s : '%s')}}catch(e){'%s';};",$sObject,$sElements,$sElements,$sReturnMode,$sRndErr,$sRndErr)
Local $sRetVal = _FFSetGet($Socket,$sCommand)
If $sRndErr <> $sRetVal Then
If $bCompress Then Return StringRegExpReplace($sRetVal, "[\s]+", " ")
Return $sRetVal
Else
SetError(__FFError("_FFTableGetCell", $_FF_ERROR_NoMatch, "Table/Column/Row: " & $vTable & "/" & $iColumn & "/" & $iRow))
Return 0
EndIf
EndFunc ;==> _FFTableGetCell
[/autoit]
hoffentlich muß ich das nicht erklären
Die ist auch schon in der aktuellen Testversion drin.
Viel Spaß damit!