diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/PageObject.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/PageObject.java index bbbdeb93ed1..d877bc20b78 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/PageObject.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/PageObject.java @@ -630,8 +630,10 @@ public class PageObject { ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(false);", webElement); } - protected void scrollToViewAndClick(WebElement webElement) { + protected void scrollToViewAndClickWhenElementIsEntirelyVisible(WebElement webElement) { scrollToView(webElement); + // Browsers may use smooth scrolling + new WebDriverWait(driver, 10).until(t -> isElementEntirelyVisible(webElement)); webElement.click(); } diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/common/DataEntryDialogPO.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/common/DataEntryDialogPO.java index 6fed4c53712..37cc2d760d8 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/common/DataEntryDialogPO.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/common/DataEntryDialogPO.java @@ -1,6 +1,7 @@ package com.sap.sailing.selenium.pages.common; import org.openqa.selenium.Alert; +import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.ExpectedCondition; @@ -57,7 +58,11 @@ public abstract class DataEntryDialogPO extends PageArea { } public void pressOk(boolean accept) { - scrollToViewAndClick(this.okButton); + // This generically triggers revalidation in dialogs to ensure that the ok button gets enabled + ((JavascriptExecutor) driver).executeScript("!!document.activeElement ? document.activeElement.blur() : 0"); + + scrollToViewAndClickWhenElementIsEntirelyVisible(this.okButton); + new WebDriverWait(driver, 10).until(driver -> this.okButton.isEnabled()); ExpectedCondition condition = ExpectedConditions.alertIsPresent(); Alert alert = condition.apply(this.driver);