@@ -5,6 +5,7 @@ import org.openqa.selenium.WebElement
5
5
import org.openqa.selenium.remote.RemoteWebDriver
6
6
import org.openqa.selenium.remote.RemoteWebElement
7
7
import org.openqa.selenium.support.ui.Select
8
+ import seleniumtestinglib.queries.executeTLQuery
8
9
9
10
val WebElement .value: Any?
10
11
get() {
@@ -21,7 +22,7 @@ val WebElement.displayValue: Any?
21
22
Select (this ).let {
22
23
when {
23
24
it.isMultiple -> it.allSelectedOptions.map(WebElement ::getText)
24
- else -> it.firstSelectedOption.text
25
+ else -> it.firstSelectedOption.text
25
26
}
26
27
} else getAttribute(" value" )
27
28
@@ -37,14 +38,14 @@ val WebElement.formValues: Map<String, Any?>
37
38
" input" -> when (elements.first().getAttribute(" type" )) {
38
39
" checkbox" -> when {
39
40
elements.size > 1 -> elements.filter { it.isChecked }.map { it.getAttribute(" value" ) }
40
- else -> elements.first().isChecked
41
+ else -> elements.first().isChecked
41
42
}
42
43
43
- " radio" -> elements.firstOrNull { it.isChecked }?.value
44
- else -> elements.first().value
44
+ " radio" -> elements.firstOrNull { it.isChecked }?.value
45
+ else -> elements.first().value
45
46
}
46
47
47
- else -> elements.first().value
48
+ else -> elements.first().value
48
49
}
49
50
}
50
51
}
@@ -82,7 +83,7 @@ val WebElement.isRequired
82
83
val WebElement .isValid
83
84
get() = when (tagName) {
84
85
" form" -> wrappedDriver.executeScript(" return arguments[0].checkValidity()" , this ) as Boolean
85
- else -> wrappedDriver.executeScript(
86
+ else -> wrappedDriver.executeScript(
86
87
" return arguments[0].getAttribute('aria-invalid')" ,
87
88
this
88
89
) in setOf (null , " false" )
@@ -137,3 +138,22 @@ val WebElement.errorMessage: String?
137
138
}
138
139
139
140
internal val WebElement .wrappedDriver get() = (this as RemoteWebElement ).wrappedDriver as RemoteWebDriver
141
+
142
+
143
+ fun WebElement.fireEvent (eventName : Event , eventProperties : Map <String , Map <String , Any ?>> = emptyMap()): Any? {
144
+ wrappedDriver.ensureScript(" testing-library.js" , " fireEvent.change" )
145
+ return wrappedDriver.executeScript(" fireEvent.$eventName (arguments[0], arguments[1])" , this , eventProperties)
146
+ }
147
+
148
+ @Suppress(" unused" )
149
+ enum class Event {
150
+ copy, cut, paste, compositionEnd, compositionStart, compositionUpdate, keyDown, keyPress, keyUp, focus, blur,
151
+ focusIn, focusOut, change, input, invalid, submit, reset, click, contextMenu, dblClick, drag, dragEnd, dragEnter,
152
+ dragExit, dragLeave, dragOver, dragStart, drop, mouseDown, mouseEnter, mouseLeave, mouseMove, mouseOut, mouseOver,
153
+ mouseUp, select, touchCancel, touchEnd, touchMove, touchStart, resize, scroll, wheel, abort, canPlay,
154
+ canPlayThrough, durationChange, emptied, encrypted, ended, loadedData, loadedMetadata, loadStart, pause, play,
155
+ playing, progress, rateChange, seeked, seeking, stalled, suspend , timeUpdate, volumeChange, waiting, load, error,
156
+ animationStart, animationEnd, animationIteration, transitionCancel, transitionEnd, transitionRun, transitionStart,
157
+ pointerOver, pointerEnter, pointerDown, pointerMove, pointerUp, pointerCancel, pointerOut, pointerLeave,
158
+ gotPointerCapture, lostPointerCapture, popState, offline, online, doubleClick
159
+ }
0 commit comments