Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updating FFClick to include Click by Text #1

Open
LaOrhyUAcMji opened this issue Jan 1, 2023 · 0 comments
Open

Updating FFClick to include Click by Text #1

LaOrhyUAcMji opened this issue Jan 1, 2023 · 0 comments

Comments

@LaOrhyUAcMji
Copy link

Could this be implemented in the library? Thanks.

`Func _FFClick($sElement, $sMode = "elements", $iIndex = 0, $bLoadWait = True)
Local Const $sFuncName = "_FFClick"

If Not IsInt($iIndex) Then
	SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iIndex: " & $iIndex))
	Return 0
EndIf

If $sMode = Default Then $sMode = "elements"
If $iIndex = Default Then $iIndex = 0

Switch StringLower($sMode)
	Case "elements"
		If StringLeft($sElement, 7) = "OBJECT|" Then $sElement = StringMid($sElement, 8)
	Case "id"
		$sElement = ".getElementById('" & $sElement & "')"
	Case "name"
		$sElement = ".getElementsByName('" & $sElement & "')[" & $iIndex & "]"
	Case "class"
		$sElement = ".getElementsByClassName('" & $sElement & "')[" & $iIndex & "]"
	Case "tag"
		$sElement = ".getElementsByTagName('" & $sElement & "')[" & $iIndex & "]"
	Case "selector"
		$sElement = ".querySelectorAll('" & $sElement & "')[" & $iIndex & "]"
	Case "text"
		$sElement = ".evaluate(""//*[contains(text(), '" & $sElement & "')]"", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;"
	Case Else
		SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(elements|id|name|class|tag) $sMode: " & $sMode))
		Return 0
EndSwitch

If StringLeft($sElement, 1) = "." Then $sElement = "FFau3.WCD" & $sElement

Local $RetVal = _FFCmd("FFau3.simulateEvent(" & $sElement & ",'MouseEvents','click');")
If Not @error And $RetVal <> "_FFCmd_Err" And $RetVal = 1 Then
	Sleep(25)
	If $bLoadWait Then Return _FFLoadWait()
	__FFSetTopDocument()
	Return 1
Else
	SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sElement: " & $sElement))
	Return 0
EndIf

EndFunc ;==>_FFClick`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant