Skip to content

Commit 5bb7a7a

Browse files
authored
Update _WD_ElementSelectAction (#377)
* _WD_ElementSelectAction 'selectedOptions' group (#375) * _WD_ElementSelectAction 'options' added group name (#374) * _WD_ElementSelectAction 'selectAll' JS validation (#373) * _WD_ElementSelectAction 'selectedLabels' JS refact (#376) * _WD_ElementSelectAction + SINGLESELECT (#367) * _ElementSelectAction : JS refactoring + case insensivity (#381) * Return result from `selectAll` * selectAll + $_WD_ERROR_NoMatch
1 parent e105cdc commit 5bb7a7a

File tree

3 files changed

+254
-74
lines changed

3 files changed

+254
-74
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
Go to [legend](#legend---types-of-changes) for further information about the types of changes.
1111

12+
## [Unreleased]
13+
14+
### Changed
15+
16+
- _WD_ElementSelectAction
17+
- Added `singleSelect` command
18+
- Revised columns returned by `options` and `selectedOptions` commands
19+
- Refactored Javascript coding
20+
1221
## [0.10.1]
1322

1423
### Added

wd_demo.au3

Lines changed: 64 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -819,7 +819,10 @@ Func DemoSelectOptions()
819819
If @error Then Return SetError(@error, @extended, '')
820820

821821
; change the attributes of the frame to improve the visibility of the <select> element, on which the options will be indicated
822-
Local $sJavaScript = "var element = arguments[0]; element.setAttribute('height', '500'); element.setAttribute('padding', '0');"
822+
Local $sJavaScript = _
823+
"var element = arguments[0];" & _
824+
"element.setAttribute('height', '500');" & _
825+
"element.setAttribute('padding', '0');"
823826
_WD_ExecuteScript($sSession, $sJavaScript, __WD_JsonElement($sFrame), Default, Default)
824827
If @error Then Return SetError(@error, @extended, '')
825828

@@ -833,7 +836,8 @@ Func DemoSelectOptions()
833836

834837
; change <select> element size, to see all <option> at once
835838
$sJavaScript = _
836-
"var element = arguments[0];element.setAttribute('size', '10')"
839+
"var element = arguments[0];" & _
840+
"element.setAttribute('size', '10')"
837841
_WD_ExecuteScript($sSession, $sJavaScript, __WD_JsonElement($sSelectElement), Default, Default)
838842

839843
; select ALL options
@@ -847,17 +851,41 @@ Func DemoSelectOptions()
847851
MsgBox($MB_OK + $MB_TOPMOST + $MB_ICONINFORMATION, "Information", "After DESELECTALL")
848852

849853
; select desired options
850-
Local $aOptions[] = ['Cat', 'Hamster', 'Parrot', 'Albatross']
851-
_WD_ElementSelectAction($sSession, $sSelectElement, 'MULTISELECT', $aOptions)
854+
Local $aOptionsToSelect[] = ['Cat', 'HAMSTER', 'parrot', 'albatroSS']
855+
_WD_ElementSelectAction($sSession, $sSelectElement, 'MULTISELECT', $aOptionsToSelect)
852856
If @error Then Return SetError(@error, @extended, '')
853-
MsgBox($MB_OK + $MB_TOPMOST + $MB_ICONINFORMATION, "Information", "After MULTISELECT")
857+
MsgBox($MB_OK + $MB_TOPMOST + $MB_ICONINFORMATION, "Information", "After MULTISELECT: Cat / HAMSTER / parrot / albatroSS")
854858

855-
; retrieves all <option> elements as 2D array
856-
Local $aSelectedOptions = _WD_ElementSelectAction($sSession, $sSelectElement, 'OPTIONS')
859+
; retrieves selected <option> elements as 2D array
860+
Local $aSelectedOptions = _WD_ElementSelectAction($sSession, $sSelectElement, 'selectedOptions')
857861
If @error Then Return SetError(@error, @extended, '')
858862

859863
_ArrayDisplay($aSelectedOptions, '$aSelectedOptions')
860864

865+
_WD_ElementSelectAction($sSession, $sSelectElement, 'SINGLESELECT', 'PARROT')
866+
If @error Then Return SetError(@error, @extended, '')
867+
MsgBox($MB_OK + $MB_TOPMOST + $MB_ICONINFORMATION, "Information", "After SINGLESELECT: PARROT (Parrot)")
868+
869+
; retrieves all <option> elements as 2D array
870+
Local $aAllOptions = _WD_ElementSelectAction($sSession, $sSelectElement, 'OPTIONS')
871+
If @error Then Return SetError(@error, @extended, '')
872+
873+
_ArrayDisplay($aAllOptions, '$aAllOptions')
874+
875+
; deselect ALL options
876+
_WD_ElementSelectAction($sSession, $sSelectElement, 'DESELECTALL')
877+
If @error Then Return SetError(@error, @extended, '')
878+
879+
; disable 'multiple' attribute for <select> element
880+
$sJavaScript = _
881+
"var element = arguments[0];" & _
882+
"element.multiple = false"
883+
_WD_ExecuteScript($sSession, $sJavaScript, __WD_JsonElement($sSelectElement), Default, Default)
884+
885+
; this will set @error as <select> element does not have a 'multiple' attribute
886+
_WD_ElementSelectAction($sSession, $sSelectElement, 'MULTISELECT', $aOptionsToSelect)
887+
MsgBox($MB_OK + $MB_TOPMOST + $MB_ICONINFORMATION, "Information", "After MULTISELECT on <select> element with disabled 'multiple' attribute" & @CRLF & "@error=" & @error)
888+
861889
; now will test enabled/disabled OPTGROUP
862890
_WD_Navigate($sSession, 'https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup#examples')
863891
If @error Then Return SetError(@error, @extended, '')
@@ -869,25 +897,30 @@ Func DemoSelectOptions()
869897
If @error Then Return SetError(@error, @extended, '')
870898

871899
; change the attributes of the frame to improve the visibility of the <select> element, on which the options will be indicated
872-
Local $sJavaScript2 = "var element = arguments[0]; element.setAttribute('height', '500'); element.setAttribute('padding', '0');"
900+
Local $sJavaScript2 = _
901+
"var element = arguments[0];" & _
902+
"element.setAttribute('height', '500');" & _
903+
"element.setAttribute('padding', '0');"
873904
_WD_ExecuteScript($sSession, $sJavaScript2, __WD_JsonElement($sFrame2), Default, Default)
874905
If @error Then Return SetError(@error, @extended, '')
875906

876907
; entering to the frame
877908
_WD_FrameEnter($sSession, $sFrame2)
878909
If @error Then Return SetError(@error, @extended, '')
879910

880-
; get <select> element by it's name
881-
Local $sSelectElement2 = _WD_FindElement($sSession, $_WD_LOCATOR_ByCSSSelector,"body > select")
911+
; get <select> element
912+
Local $sSelectElement2 = _WD_FindElement($sSession, $_WD_LOCATOR_ByCSSSelector, "body > select")
882913
If @error Then Return SetError(@error, @extended, '')
883914

884915
; change <select> element size, to see all <option> at once
885916
$sJavaScript2 = _
886-
"var element = arguments[0];element.setAttribute('size', '9')"
917+
"var element = arguments[0];" & _
918+
"element.setAttribute('size', '9')"
887919
_WD_ExecuteScript($sSession, $sJavaScript2, __WD_JsonElement($sSelectElement2), Default, Default)
888920

889921
$sJavaScript2 = _
890-
"var element = arguments[0];element.setAttribute('multiple','')"
922+
"var element = arguments[0];" & _
923+
"element.setAttribute('multiple','')"
891924
_WD_ExecuteScript($sSession, $sJavaScript2, __WD_JsonElement($sSelectElement2), Default, Default)
892925

893926
; select ALL options
@@ -900,18 +933,32 @@ Func DemoSelectOptions()
900933
If @error Then Return SetError(@error, @extended, '')
901934
MsgBox($MB_OK + $MB_TOPMOST + $MB_ICONINFORMATION, "Information", "After DESELECTALL")
902935

903-
; select desired options
904-
Local $aOptions2[] = ['Option 1.1', 'Option 2.1', 'Option 3.1']
936+
; select desired <option> elements one after other each separately
937+
Local $aOptions2[] = ['Option 1.1']
938+
_WD_ElementSelectAction($sSession, $sSelectElement2, 'MULTISELECT', $aOptions2)
939+
If @error Then Return SetError(@error, @extended, '')
940+
941+
$aOptions2[0] = 'Option 2.1'
905942
_WD_ElementSelectAction($sSession, $sSelectElement2, 'MULTISELECT', $aOptions2)
906943
If @error Then Return SetError(@error, @extended, '')
907-
MsgBox($MB_OK + $MB_TOPMOST + $MB_ICONINFORMATION, "Information", "After MULTISELECT")
944+
945+
$aOptions2[0] = 'Option 3.1' ; this will set @error as 'Option 3.1' is disabled
946+
_WD_ElementSelectAction($sSession, $sSelectElement2, 'MULTISELECT', $aOptions2)
947+
MsgBox($MB_OK + $MB_TOPMOST + $MB_ICONINFORMATION, "Information", "After MULTISELECT: 1.1 / 2.1 / 3.1" & @CRLF & "<option> elements one after other each separately" & @CRLF & "@error=" & @error)
908948

909949
; retrieves all <option> elements as 2D array
910-
Local $aSelectedOptions2 = _WD_ElementSelectAction($sSession, $sSelectElement2, 'OPTIONS')
950+
Local $aAllOptions2 = _WD_ElementSelectAction($sSession, $sSelectElement2, 'OPTIONS')
911951
If @error Then Return SetError(@error, @extended, '')
912952

913-
_ArrayDisplay($aSelectedOptions2, '$aSelectedOptions2')
953+
_ArrayDisplay($aAllOptions2, '$aAllOptions2')
954+
955+
_WD_ElementSelectAction($sSession, $sSelectElement2, 'SINGLESELECT', 'Option 2.1')
956+
If @error Then Return SetError(@error, @extended, '')
957+
MsgBox($MB_OK + $MB_TOPMOST + $MB_ICONINFORMATION, "Information", "After SINGLESELECT: 2.1")
914958

959+
; this will set @error as 'Option 3.2' is disabled
960+
_WD_ElementSelectAction($sSession, $sSelectElement2, 'SINGLESELECT', 'Option 3.2')
961+
MsgBox($MB_OK + $MB_TOPMOST + $MB_ICONINFORMATION, "Information", "After SINGLESELECT: 3.2 - disabled <option> element" & @CRLF & "@error=" & @error)
915962

916963
EndFunc ;==>DemoSelectOptions
917964

0 commit comments

Comments
 (0)