29
29
import org.junit.jupiter.api.Tag;
30
30
import org.openqa.selenium.Alert;
31
31
import org.openqa.selenium.By;
32
+
import org.openqa.selenium.Capabilities;
33
+
import org.openqa.selenium.ImmutableCapabilities;
32
34
import org.openqa.selenium.JavascriptExecutor;
33
35
import org.openqa.selenium.WebDriver;
34
36
import org.openqa.selenium.WebDriverException;
35
37
import org.openqa.selenium.WebElement;
38
+
import org.openqa.selenium.remote.RemoteWebDriver;
36
39
37
40
import java.lang.reflect.InvocationTargetException;
38
41
import java.lang.reflect.Method;
@@ -81,7 +84,7 @@ public void afterGet(WebDriver driver, String url) {
81
84
acc.append("afterGet\n");
82
85
}
83
86
};
84
-
WebDriver decorated = new EventFiringDecorator(listener).decorate(driver);
87
+
WebDriver decorated = new EventFiringDecorator<>(listener).decorate(driver);
85
88
86
89
decorated.get("http://example.com/");
87
90
@@ -134,7 +137,7 @@ public void afterClick(WebElement element) {
134
137
}
135
138
};
136
139
137
-
WebDriver decorated = new EventFiringDecorator(listener).decorate(driver);
140
+
WebDriver decorated = new EventFiringDecorator<>(listener).decorate(driver);
138
141
139
142
decorated.findElement(By.id("test")).click();
140
143
@@ -183,7 +186,7 @@ public void afterBack(WebDriver.Navigation navigation) {
183
186
}
184
187
};
185
188
186
-
WebDriver decorated = new EventFiringDecorator(listener).decorate(driver);
189
+
WebDriver decorated = new EventFiringDecorator<>(listener).decorate(driver);
187
190
188
191
decorated.navigate().back();
189
192
@@ -231,7 +234,7 @@ public void afterDismiss(Alert alert) {
231
234
}
232
235
};
233
236
234
-
WebDriver decorated = new EventFiringDecorator(listener).decorate(driver);
237
+
WebDriver decorated = new EventFiringDecorator<>(listener).decorate(driver);
235
238
236
239
decorated.switchTo().alert().dismiss();
237
240
@@ -273,7 +276,7 @@ public void afterExecuteScript(WebDriver driver, String script, Object[] args, O
273
276
}
274
277
};
275
278
276
-
WebDriver decorated = new EventFiringDecorator(listener).decorate(driver);
279
+
WebDriver decorated = new EventFiringDecorator<>(listener).decorate(driver);
277
280
278
281
((JavascriptExecutor) decorated).executeScript("sum", "2", "2");
279
282
@@ -297,7 +300,7 @@ public void beforeAnyCall(Object target, Method method, Object[] args) {
297
300
}
298
301
};
299
302
300
-
WebDriver decorated = new EventFiringDecorator(listener).decorate(driver);
303
+
WebDriver decorated = new EventFiringDecorator<>(listener).decorate(driver);
301
304
302
305
assertThatNoException().isThrownBy(decorated::getWindowHandle);
303
306
}
@@ -327,7 +330,7 @@ public void beforeGetWindowHandle(WebDriver driver) {
327
330
}
328
331
};
329
332
330
-
WebDriver decorated = new EventFiringDecorator(listener).decorate(driver);
333
+
WebDriver decorated = new EventFiringDecorator<>(listener).decorate(driver);
331
334
332
335
assertThatNoException().isThrownBy(decorated::getWindowHandle);
333
336
}
@@ -342,7 +345,7 @@ public void afterAnyCall(Object target, Method method, Object[] args, Object res
342
345
}
343
346
};
344
347
345
-
WebDriver decorated = new EventFiringDecorator(listener).decorate(driver);
348
+
WebDriver decorated = new EventFiringDecorator<>(listener).decorate(driver);
346
349
347
350
assertThatNoException().isThrownBy(decorated::getWindowHandle);
348
351
}
@@ -358,7 +361,7 @@ public void afterAnyWebDriverCall(WebDriver driver, Method method, Object[] args
358
361
}
359
362
};
360
363
361
-
WebDriver decorated = new EventFiringDecorator(listener).decorate(driver);
364
+
WebDriver decorated = new EventFiringDecorator<>(listener).decorate(driver);
362
365
363
366
assertThatNoException().isThrownBy(decorated::getWindowHandle);
364
367
}
@@ -373,7 +376,7 @@ public void afterGetWindowHandle(WebDriver driver, String result) {
373
376
}
374
377
};
375
378
376
-
WebDriver decorated = new EventFiringDecorator(listener).decorate(driver);
379
+
WebDriver decorated = new EventFiringDecorator<>(listener).decorate(driver);
377
380
378
381
assertThatNoException().isThrownBy(decorated::getWindowHandle);
379
382
}
@@ -389,7 +392,46 @@ public void onError(Object target, Method method, Object[] args, InvocationTarge
389
392
}
390
393
};
391
394
392
-
WebDriver decorated = new EventFiringDecorator(listener).decorate(driver);
395
+
WebDriver decorated = new EventFiringDecorator<>(listener).decorate(driver);
396
+
397
+
assertThatExceptionOfType(WebDriverException.class)
398
+
.isThrownBy(decorated::getWindowHandle);
399
+
}
400
+
401
+
@Test
402
+
void shouldBeAbleToDecorateAChildClassOfWebDriver() {
403
+
RemoteWebDriver driver = mock(RemoteWebDriver.class);
404
+
when(driver.getCapabilities()).thenReturn(new ImmutableCapabilities("browserName", "firefox"));
405
+
406
+
WebDriverListener listener = new WebDriverListener() {
407
+
@Override
408
+
public void onError(Object target, Method method, Object[] args, InvocationTargetException e) {
409
+
throw new RuntimeException("listener");
410
+
}
411
+
};
412
+
413
+
RemoteWebDriver decorated =
414
+
new EventFiringDecorator<>(RemoteWebDriver.class, listener).decorate(driver);
415
+
416
+
Capabilities caps = decorated.getCapabilities();
417
+
418
+
assertThat(caps.getBrowserName()).isEqualTo("firefox");
419
+
}
420
+
421
+
@Test
422
+
void shouldBeAbleToCallDecoratedMethodForDecoratedChildClass() {
423
+
RemoteWebDriver driver = mock(RemoteWebDriver.class);
424
+
when(driver.getWindowHandle()).thenThrow(new WebDriverException());
425
+
426
+
WebDriverListener listener = new WebDriverListener() {
427
+
@Override
428
+
public void onError(Object target, Method method, Object[] args, InvocationTargetException e) {
429
+
throw new RuntimeException("listener");
430
+
}
431
+
};
432
+
433
+
RemoteWebDriver decorated =
434
+
new EventFiringDecorator<>(RemoteWebDriver.class, listener).decorate(driver);
393
435
394
436
assertThatExceptionOfType(WebDriverException.class)
395
437
.isThrownBy(decorated::getWindowHandle);
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4