Skip to content
This repository was archived by the owner on Mar 25, 2025. It is now read-only.

Commit fcc9c23

Browse files
authored
Merge pull request #25 from slu-it/eventbuilder-exceptions
Made setting of Event before- and after-data an optional operation as long as only common Selenium exceptions are thrown
2 parents e00a4f2 + 9f55b04 commit fcc9c23

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

webtester-core/src/main/java/info/novatec/testit/webtester/internal/proxies/arounds/EventProducingImplementationDecorator.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import java.util.Optional;
55
import java.util.function.Supplier;
66

7+
import org.openqa.selenium.NoSuchElementException;
8+
import org.openqa.selenium.StaleElementReferenceException;
79
import org.openqa.selenium.WebElement;
810

911
import lombok.extern.slf4j.Slf4j;
@@ -51,20 +53,38 @@ public Object invoke(Object proxy, Method method, Object[] args, Implementation
5153
PageFragmentEventBuilder eventBuilder = getEventBuilderFor(producesEvent);
5254
eventBuilder.setPageFragment(( PageFragment ) proxy);
5355
if (eventBuilder.needsBeforeData()) {
54-
eventBuilder.setBeforeData(webElementSupplier.get());
56+
tryToSetBeforeData(eventBuilder);
5557
}
5658

5759
Object returnObject = implementation.invoke(proxy, method, args);
5860

5961
if (eventBuilder.needsAfterData()) {
60-
eventBuilder.setAfterData(webElementSupplier.get());
62+
tryToSetAfterData(eventBuilder);
6163
}
6264

6365
eventSystem.fireEvent(eventBuilder.build());
6466
return returnObject;
6567

6668
}
6769

70+
private void tryToSetBeforeData(PageFragmentEventBuilder eventBuilder) {
71+
try {
72+
eventBuilder.setBeforeData(webElementSupplier.get());
73+
} catch (NoSuchElementException | StaleElementReferenceException e) {
74+
log.warn("Exception while setting event before data: " + e.getMessage());
75+
log.debug("Stacktrace for previous warning: ", e);
76+
}
77+
}
78+
79+
private void tryToSetAfterData(PageFragmentEventBuilder eventBuilder) {
80+
try {
81+
eventBuilder.setAfterData(webElementSupplier.get());
82+
} catch (NoSuchElementException | StaleElementReferenceException e) {
83+
log.warn("Exception while setting event after data: " + e.getMessage());
84+
log.debug("Stacktrace for previous warning: ", e);
85+
}
86+
}
87+
6888
@SuppressWarnings("unchecked")
6989
private PageFragmentEventBuilder getEventBuilderFor(Produces producesEvent)
7090
throws IllegalAccessException, InstantiationException {

0 commit comments

Comments
 (0)