Adding another hack for selenium tests
Project: http://git-wip-us.apache.org/repos/asf/archiva/repo Commit: http://git-wip-us.apache.org/repos/asf/archiva/commit/8b3de94f Tree: http://git-wip-us.apache.org/repos/asf/archiva/tree/8b3de94f Diff: http://git-wip-us.apache.org/repos/asf/archiva/diff/8b3de94f Branch: refs/heads/master Commit: 8b3de94f7738c897acdc7d18bed1f0fa9bd90c0f Parents: 8070af6 Author: Martin Stockhammer <[email protected]> Authored: Thu Nov 2 21:53:11 2017 +0100 Committer: Martin Stockhammer <[email protected]> Committed: Thu Nov 2 21:53:11 2017 +0100 ---------------------------------------------------------------------- .../archiva/web/test/RepositoryAdminTest.java | 19 +++++++++++--- .../web/test/parent/AbstractSeleniumTest.java | 27 ++++++++++++++++++-- 2 files changed, 41 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/archiva/blob/8b3de94f/archiva-modules/archiva-web/archiva-webapp-test/src/test/java/org/apache/archiva/web/test/RepositoryAdminTest.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-web/archiva-webapp-test/src/test/java/org/apache/archiva/web/test/RepositoryAdminTest.java b/archiva-modules/archiva-web/archiva-webapp-test/src/test/java/org/apache/archiva/web/test/RepositoryAdminTest.java index e8240f5..6daad8a 100644 --- a/archiva-modules/archiva-web/archiva-webapp-test/src/test/java/org/apache/archiva/web/test/RepositoryAdminTest.java +++ b/archiva-modules/archiva-web/archiva-webapp-test/src/test/java/org/apache/archiva/web/test/RepositoryAdminTest.java @@ -25,7 +25,9 @@ import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.Select; import org.openqa.selenium.support.ui.WebDriverWait; import java.util.List; @@ -61,9 +63,15 @@ public class RepositoryAdminTest setFieldValue( "id", "myrepoid" ); setFieldValue( "name", "My repo name" ); setFieldValue( "url", "http://www.repo.org" ); - + + el = wait.until( ExpectedConditions.elementToBeClickable(By.id("remote-repository-save-button") )); + Actions actions = new Actions(getWebDriver()); + actions.moveToElement(el); + actions.perform(); + ((JavascriptExecutor)getWebDriver()).executeScript("arguments[0].scrollIntoView();", el); el.click(); - wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("remote-repositories-view-a"))); + el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("remote-repositories-view-a"))); + ((JavascriptExecutor)getWebDriver()).executeScript("arguments[0].scrollIntoView();", el); tryClick(By.id("menu-proxy-connectors-list-a"), ExpectedConditions.visibilityOfElementLocated(By.id("proxy-connectors-view-tabs-a-network-proxies-grid")), "Network proxies not available", @@ -76,7 +84,12 @@ public class RepositoryAdminTest el = wait.until(ExpectedConditions.elementToBeClickable( By.id("proxy-connectors-view-tabs-a-edit") )); el.click(); el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("proxy-connector-btn-save"))); - selectValue( "sourceRepoId", "internal" ); + wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("remote-repository-edit-fieldset"))); + // Another hack, don't know why the normal selectValue() does not work here + ((JavascriptExecutor)getWebDriver()).executeScript("jQuery('#sourceRepoId').css('display','block')"); + Select select = new Select(getWebDriver().findElement(By.xpath(".//select[@id='sourceRepoId']"))); + select.selectByVisibleText("internal"); + // selectValue( "sourceRepoId", "internal", true ); // Workaround // TODO: Check after upgrade of htmlunit, bootstrap or jquery // TODO: Check whats wrong here http://git-wip-us.apache.org/repos/asf/archiva/blob/8b3de94f/archiva-modules/archiva-web/archiva-webapp-test/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-web/archiva-webapp-test/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java b/archiva-modules/archiva-web/archiva-webapp-test/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java index 96d6cf8..f7d9799 100644 --- a/archiva-modules/archiva-web/archiva-webapp-test/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java +++ b/archiva-modules/archiva-web/archiva-webapp-test/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java @@ -37,8 +37,10 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; @@ -503,11 +505,32 @@ public abstract class AbstractSeleniumTest } - public void selectValue( String locator, String value ) + public WebElement selectValue( String locator, String value) { + return this.selectValue( locator, value, false ); + } + + public WebElement selectValue( String locator, String value, boolean scrollToView ) { - WebElement element = findElement(locator ); + int count = 5; + boolean check = true; + WebDriverWait wait = new WebDriverWait( getWebDriver( ), 10 ); + WebElement element = null; + while(check && count-->0) + { + try + { + element = findElement( locator ); + List<WebElement> elementList = new ArrayList<>( ); + elementList.add( element ); + wait.until( ExpectedConditions.visibilityOfAllElements( elementList ) ); + check=false; + } catch (Throwable e) { + logger.info("Waiting for select element {} to be visible", locator); + } + } Select select = new Select(element); select.selectByValue( value ); + return element; } public WebElement findElement(String locator) {
