@@ -196,9 +196,8 @@ public void testControlClickingOnMultiSelectionList() {
196
196
@ Ignore (IE )
197
197
@ Ignore (value = FIREFOX , travis = true )
198
198
public void testControlClickingOnCustomMultiSelectionList () {
199
- assumeFalse ("FIXME: macs don't have CONTROL key" ,
200
- getEffectivePlatform (driver ).is (Platform .MAC ));
201
199
driver .get (pages .selectableItemsPage );
200
+ Keys key = getEffectivePlatform (driver ).is (Platform .MAC ) ? Keys .COMMAND : Keys .CONTROL ;
202
201
203
202
WebElement reportingElement = driver .findElement (By .id ("infodiv" ));
204
203
@@ -207,11 +206,11 @@ public void testControlClickingOnCustomMultiSelectionList() {
207
206
List <WebElement > listItems = driver .findElements (By .tagName ("li" ));
208
207
209
208
Actions actions = new Actions (driver );
210
- Action selectThreeItems = actions .keyDown (Keys . CONTROL )
209
+ Action selectThreeItems = actions .keyDown (key )
211
210
.click (listItems .get (1 ))
212
211
.click (listItems .get (3 ))
213
212
.click (listItems .get (5 ))
214
- .keyUp (Keys . CONTROL )
213
+ .keyUp (key )
215
214
.build ();
216
215
217
216
selectThreeItems .perform ();
@@ -224,6 +223,66 @@ public void testControlClickingOnCustomMultiSelectionList() {
224
223
assertThat (reportingElement .getText ()).isEqualTo ("#item7" );
225
224
}
226
225
226
+ @ Test
227
+ @ Ignore (IE )
228
+ @ Ignore (value = FIREFOX , travis = true )
229
+ public void testControlClickingWithMultiplePointers () {
230
+ driver .get (pages .selectableItemsPage );
231
+
232
+ Keys key = getEffectivePlatform (driver ).is (Platform .MAC ) ? Keys .COMMAND : Keys .CONTROL ;
233
+ WebElement reportingElement = driver .findElement (By .id ("infodiv" ));
234
+
235
+ assertThat (reportingElement .getText ()).isEqualTo ("no info" );
236
+
237
+ List <WebElement > listItems = driver .findElements (By .tagName ("li" ));
238
+
239
+ PointerInput defaultPen = new PointerInput (PointerInput .Kind .PEN , "default pen" );
240
+ Sequence actionListPen = new Sequence (defaultPen , 0 )
241
+ .addAction (new Pause (defaultPen , Duration .ZERO ))
242
+ .addAction (defaultPen .createPointerMove (Duration .ZERO , PointerInput .Origin .fromElement (listItems .get (1 )), 0 , 0 ))
243
+ .addAction (defaultPen .createPointerDown (0 ))
244
+ .addAction (defaultPen .createPointerUp (0 ))
245
+ .addAction (new Pause (defaultPen , Duration .ZERO ))
246
+ .addAction (new Pause (defaultPen , Duration .ZERO ))
247
+ .addAction (new Pause (defaultPen , Duration .ZERO ))
248
+ .addAction (defaultPen .createPointerMove (Duration .ZERO , PointerInput .Origin .fromElement (listItems .get (3 )), 0 , 0 ))
249
+ .addAction (defaultPen .createPointerDown (0 ))
250
+ .addAction (defaultPen .createPointerUp (0 ))
251
+ .addAction (new Pause (defaultPen , Duration .ZERO ));
252
+
253
+ PointerInput defaultMouse = new PointerInput (PointerInput .Kind .MOUSE , "default mouse" );
254
+ Sequence actionListMouse = new Sequence (defaultMouse , 0 )
255
+ .addAction (new Pause (defaultMouse , Duration .ZERO ))
256
+ .addAction (new Pause (defaultMouse , Duration .ZERO ))
257
+ .addAction (new Pause (defaultMouse , Duration .ZERO ))
258
+ .addAction (new Pause (defaultMouse , Duration .ZERO ))
259
+ .addAction (defaultMouse .createPointerMove (Duration .ZERO , PointerInput .Origin .fromElement (listItems .get (5 )), 0 , 0 ))
260
+ .addAction (defaultMouse .createPointerDown (0 ))
261
+ .addAction (defaultMouse .createPointerUp (0 ))
262
+ .addAction (new Pause (defaultMouse , Duration .ZERO ))
263
+ .addAction (new Pause (defaultMouse , Duration .ZERO ))
264
+ .addAction (new Pause (defaultMouse , Duration .ZERO ))
265
+ .addAction (new Pause (defaultMouse , Duration .ZERO ));
266
+
267
+ KeyInput defaultKeyboard = new KeyInput ("default keyboard" );
268
+ Sequence actionListKeyboard = new Sequence (defaultKeyboard , 0 )
269
+ .addAction (defaultKeyboard .createKeyDown (key .getCodePoint ()))
270
+ .addAction (new Pause (defaultKeyboard , Duration .ZERO ))
271
+ .addAction (new Pause (defaultKeyboard , Duration .ZERO ))
272
+ .addAction (new Pause (defaultKeyboard , Duration .ZERO ))
273
+ .addAction (new Pause (defaultKeyboard , Duration .ZERO ))
274
+ .addAction (new Pause (defaultKeyboard , Duration .ZERO ))
275
+ .addAction (new Pause (defaultKeyboard , Duration .ZERO ))
276
+ .addAction (new Pause (defaultKeyboard , Duration .ZERO ))
277
+ .addAction (new Pause (defaultKeyboard , Duration .ZERO ))
278
+ .addAction (new Pause (defaultKeyboard , Duration .ZERO ))
279
+ .addAction (defaultKeyboard .createKeyUp (key .getCodePoint ()));
280
+
281
+ ((RemoteWebDriver ) driver ).perform (Arrays .asList (actionListKeyboard , actionListPen , actionListMouse ));
282
+
283
+ assertThat (reportingElement .getText ()).isEqualTo ("#item2 #item4 #item6" );
284
+ }
285
+
227
286
private void navigateToClicksPageAndClickLink () {
228
287
driver .get (pages .clicksPage );
229
288
0 commit comments