You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
' Set value to element extended '2021/8/13 chg ishi' ( special keys codes support )PublicSubSetValue(ElementId AsString, _
text AsVariant, _Optional ClearBeforeTyping AsBoolean = True, _OptionalByVal sessionid AsString = vbNullString)
Dim data AsNew Dictionary
If sessionid <> vbNullString Then
data.Add "sessionId", sessionid
End If
data.Add "id", ElementId
Dim i AsIntegerDim KeyCode AsStringDim value AsStringDim chars() AsStringIf TypeName(text) = "Long"ThenIf Keys.[_Min0] < CLng(text) And CLng(text) < Keys.[_Max0] Or_
Keys.[_Min1] < CLng(text) And CLng(text) < Keys.[_Max1] Then
KeyCode = "\ue0" & Right("0" & LCase(Hex(CLng(text))), 2)
value = KeyCode
ReDim Preserve chars(0)
chars(0) = KeyCode
Else
value = CStr(text)
ReDim chars(Len(text) - 1)
For i = 0To UBound(chars)
chars(i) = Mid(text, i + 1, 1)
NextEnd IfElse
value = CStr(text)
ReDim chars(Len(text) - 1)
For i = 0To UBound(chars)
chars(i) = Mid(text, i + 1, 1)
NextEnd If
data.Add "text", value
data.Add "value", chars
If ClearBeforeTyping = TrueThen Execute CMD_CLEAR_ELEMENT, data
Execute CMD_SEND_KEYS_TO_ELEMENT, data
End Sub
WebElement.cls
' Set value to element '2021/8/13 chg ishiPublicSubSetValue(text AsVariant, _Optional ClearBeforeTyping AsBoolean = True)
Driver_.SetValue ElementId_, text, ClearBeforeTyping, SessionId_End Sub
JsonConverter.bas
Private Function json_Encode に対して、特殊キーの場合は \ をエスケープしない様にする必要がありました。
特殊キーの判定は甘いかもしれません。
Python Seleniumの send_keys メソッドを参考にして、SetValue で特殊キーを扱えるようにしてみました。
Pythonは引数の数を固定していないので Excel VBA の ParamArray でトライしましたが、WebDriver.cls と WebElement.cls での両立は私の技量ではできませんでした。そこで WebDriver.cls と WebElement.cls 共に、入力に先立ってクリアする/しない の引数(Optional ClearBeforeTyping As Boolean = True)を加えました。
また JsonConverter.bas で特殊キーの場合は \ をエスケープしない様にする必要がありました。
WebDriver.cls
WebElement.cls
JsonConverter.bas
Private Function json_Encode に対して、特殊キーの場合は \ をエスケープしない様にする必要がありました。
特殊キーの判定は甘いかもしれません。
===========================================================
動作確認
下記の場合、このような動きになります。
”54321” ⇒ "5432" ⇒ "542" ⇒ "42" ⇒ "42ABC" ⇒ 次のinputへタブ移動
The text was updated successfully, but these errors were encountered: