From fd9572cfabf6d9761377b7b8b5cb71e585cdc0cd Mon Sep 17 00:00:00 2001 From: Marty Pradere Date: Sun, 20 Jul 2025 11:10:10 -0700 Subject: [PATCH 1/4] helper function --- src/org/labkey/test/WebDriverWrapper.java | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/org/labkey/test/WebDriverWrapper.java b/src/org/labkey/test/WebDriverWrapper.java index 28cca5bc2f..0d0319a265 100644 --- a/src/org/labkey/test/WebDriverWrapper.java +++ b/src/org/labkey/test/WebDriverWrapper.java @@ -1070,6 +1070,27 @@ protected void closeExtraWindows() } } + protected void quietlyCloseExtraWindows() + { + List windows = new ArrayList<>(getDriver().getWindowHandles()); + for (int i = 1; i < windows.size(); i++) + { + getDriver().switchTo().window(windows.get(i)); + try + { + getDriver().close(); + } + catch (UnhandledAlertException uae) + { + Optional.ofNullable(getAlertIfPresent()).ifPresent(Alert::accept); + } + } + if (windows.size() > 1) + { + getDriver().switchTo().window(windows.get(0)); + } + } + public boolean isPageEmpty() { //IE and Firefox have different notions of empty. @@ -2873,6 +2894,9 @@ public void clickAndWait(Locator l) public void openLinkInNewWindow(WebElement link) { link.sendKeys(Keys.chord(WebDriverUtils.MODIFIER_KEY, Keys.ENTER)); + if (getDriver().getWindowHandles().size() < 2) + throw new IllegalStateException("Link did not open new window in tab."); + switchToWindow(1); waitForDocument(); } From d4bb9884f89bb8e461254b42d4bdc35083b6bd9a Mon Sep 17 00:00:00 2001 From: Marty Pradere Date: Sun, 27 Jul 2025 22:17:19 -0700 Subject: [PATCH 2/4] Better win count --- src/org/labkey/test/WebDriverWrapper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/org/labkey/test/WebDriverWrapper.java b/src/org/labkey/test/WebDriverWrapper.java index 0d0319a265..56327da272 100644 --- a/src/org/labkey/test/WebDriverWrapper.java +++ b/src/org/labkey/test/WebDriverWrapper.java @@ -2893,8 +2893,9 @@ public void clickAndWait(Locator l) public void openLinkInNewWindow(WebElement link) { + int winCount = getDriver().getWindowHandles().size(); link.sendKeys(Keys.chord(WebDriverUtils.MODIFIER_KEY, Keys.ENTER)); - if (getDriver().getWindowHandles().size() < 2) + if (getDriver().getWindowHandles().size() < (winCount + 1)) throw new IllegalStateException("Link did not open new window in tab."); switchToWindow(1); From 97bc9a267df0eb7ae455d2f88763ba25d562310e Mon Sep 17 00:00:00 2001 From: Marty Pradere Date: Mon, 28 Jul 2025 13:28:44 -0700 Subject: [PATCH 3/4] add openLinkInNewWindowOrThrow --- src/org/labkey/test/WebDriverWrapper.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/org/labkey/test/WebDriverWrapper.java b/src/org/labkey/test/WebDriverWrapper.java index 56327da272..5886c2e908 100644 --- a/src/org/labkey/test/WebDriverWrapper.java +++ b/src/org/labkey/test/WebDriverWrapper.java @@ -2895,10 +2895,19 @@ public void openLinkInNewWindow(WebElement link) { int winCount = getDriver().getWindowHandles().size(); link.sendKeys(Keys.chord(WebDriverUtils.MODIFIER_KEY, Keys.ENTER)); - if (getDriver().getWindowHandles().size() < (winCount + 1)) + switchToWindow(winCount); + waitForDocument(); + } + + public void openLinkInNewWindowOrThrow(WebElement link) + { + int winCount = getDriver().getWindowHandles().size(); + link.sendKeys(Keys.chord(WebDriverUtils.MODIFIER_KEY, Keys.ENTER)); + boolean winOpen = waitFor(() -> getDriver().getWindowHandles().size() > winCount, 2000); + if (!winOpen) throw new IllegalStateException("Link did not open new window in tab."); - switchToWindow(1); + switchToWindow(winCount); waitForDocument(); } From 6c4c660deddd5130255db6d74df186b793f6253c Mon Sep 17 00:00:00 2001 From: Marty Pradere Date: Wed, 30 Jul 2025 09:26:10 -0700 Subject: [PATCH 4/4] CR feedback --- src/org/labkey/test/WebDriverWrapper.java | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/src/org/labkey/test/WebDriverWrapper.java b/src/org/labkey/test/WebDriverWrapper.java index 5886c2e908..b91e283212 100644 --- a/src/org/labkey/test/WebDriverWrapper.java +++ b/src/org/labkey/test/WebDriverWrapper.java @@ -1070,27 +1070,6 @@ protected void closeExtraWindows() } } - protected void quietlyCloseExtraWindows() - { - List windows = new ArrayList<>(getDriver().getWindowHandles()); - for (int i = 1; i < windows.size(); i++) - { - getDriver().switchTo().window(windows.get(i)); - try - { - getDriver().close(); - } - catch (UnhandledAlertException uae) - { - Optional.ofNullable(getAlertIfPresent()).ifPresent(Alert::accept); - } - } - if (windows.size() > 1) - { - getDriver().switchTo().window(windows.get(0)); - } - } - public boolean isPageEmpty() { //IE and Firefox have different notions of empty. @@ -2903,7 +2882,7 @@ public void openLinkInNewWindowOrThrow(WebElement link) { int winCount = getDriver().getWindowHandles().size(); link.sendKeys(Keys.chord(WebDriverUtils.MODIFIER_KEY, Keys.ENTER)); - boolean winOpen = waitFor(() -> getDriver().getWindowHandles().size() > winCount, 2000); + boolean winOpen = waitFor(() -> getDriver().getWindowHandles().size() > winCount, 1000); if (!winOpen) throw new IllegalStateException("Link did not open new window in tab.");