From 89e82e90bc3d1ef7d8dcac86fdfe91efcbe3c179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=ABl=20Kr=C3=A4hemann?= <joel.kraehemann@frentix.com> Date: Mon, 15 Oct 2012 17:43:01 +0200 Subject: [PATCH] OO-296: waiting for binder tree to be loaded before accessing it. --- .../olat/util/FunctionalEPortfolioUtil.java | 36 ++++++++++++++++++- .../java/org/olat/util/FunctionalUtil.java | 19 +++++----- 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/src/test/java/org/olat/util/FunctionalEPortfolioUtil.java b/src/test/java/org/olat/util/FunctionalEPortfolioUtil.java index a5a7b3f78fa..d4a5285c0cb 100644 --- a/src/test/java/org/olat/util/FunctionalEPortfolioUtil.java +++ b/src/test/java/org/olat/util/FunctionalEPortfolioUtil.java @@ -363,6 +363,15 @@ public class FunctionalEPortfolioUtil { if(!functionalHomeSiteUtil.openActionByMenuTree(browser, EPortfolioAction.MY_BINDERS, false)) return(false); + /* wait until tree has loaded */ + StringBuffer locatorBuffer = new StringBuffer(); + + locatorBuffer.append("xpath=//li[contains(@class, '") + .append(functionalUtil.getTreeNodeLoadingCss()) + .append("')]"); + functionalUtil.waitForPageToUnloadElement(browser, locatorBuffer.toString()); + + /* select binder */ StringBuffer selectorBuffer = new StringBuffer(); selectorBuffer.append("xpath=//h4[text()='") @@ -557,6 +566,14 @@ public class FunctionalEPortfolioUtil { return(false); } + /* wait until tree has loaded */ + StringBuffer locatorBuffer = new StringBuffer(); + + locatorBuffer.append("xpath=//li[contains(@class, '") + .append(functionalUtil.getTreeNodeLoadingCss()) + .append("')]"); + functionalUtil.waitForPageToUnloadElement(browser, locatorBuffer.toString()); + /* click add */ StringBuffer selectorBuffer = new StringBuffer(); @@ -741,6 +758,14 @@ public class FunctionalEPortfolioUtil { /* open editor */ openEditor(browser); + /* wait until tree has loaded */ + StringBuffer locatorBuffer = new StringBuffer(); + + locatorBuffer.append("xpath=//li[contains(@class, '") + .append(functionalUtil.getTreeNodeLoadingCss()) + .append("')]"); + functionalUtil.waitForPageToUnloadElement(browser, locatorBuffer.toString()); + /* select page and click create structure */ StringBuffer selectorBuffer = new StringBuffer(); @@ -970,11 +995,20 @@ public class FunctionalEPortfolioUtil { protected boolean selectTree(Selenium browser, String binder, String page, String structure){ String selector = createSelector(binder, page, structure); + /* wait until tree has loaded */ + StringBuffer locatorBuffer = new StringBuffer(); + + locatorBuffer.append("xpath=//li[contains(@class, '") + .append(functionalUtil.getTreeNodeLoadingCss()) + .append("')]"); + functionalUtil.waitForPageToUnloadElement(browser, locatorBuffer.toString()); + + /* click selector */ functionalUtil.waitForPageToLoadElement(browser, selector); browser.click(selector); - StringBuffer locatorBuffer = new StringBuffer(); + locatorBuffer = new StringBuffer(); locatorBuffer.append("xpath=//li[contains(@class, 'x-tree-node')]//a//span[contains(text(), '") .append((structure != null) ? structure: page) diff --git a/src/test/java/org/olat/util/FunctionalUtil.java b/src/test/java/org/olat/util/FunctionalUtil.java index dcdbdf48f81..b5c6058bbe9 100644 --- a/src/test/java/org/olat/util/FunctionalUtil.java +++ b/src/test/java/org/olat/util/FunctionalUtil.java @@ -123,6 +123,7 @@ public class FunctionalUtil { public final static String TABLE_LAST_CHILD_CSS = "b_last_child"; public final static String TREE_NODE_ANCHOR_CSS = "x-tree-node-anchor"; public final static String TREE_NODE_CSS = "x-tree-node"; + public final static String TREE_NODE_LOADING_CSS = "x-tree-node-loading"; public final static String WINDOW_CLOSE_LINK_CSS = "b_link_close"; public final static String FORM_SAVE_XPATH = "//button[@type='button' and last()]"; @@ -172,6 +173,7 @@ public class FunctionalUtil { private String tableLastChildCss; private String treeNodeAnchorCss; private String treeNodeCss; + private String treeNodeLoadingCss; private FunctionalHomeSiteUtil functionalHomeSiteUtil; private FunctionalGroupsSiteUtil functionalGroupsSiteUtil; @@ -239,6 +241,7 @@ public class FunctionalUtil { tableLastChildCss = TABLE_LAST_CHILD_CSS; treeNodeAnchorCss = TREE_NODE_ANCHOR_CSS; treeNodeCss = TREE_NODE_CSS; + treeNodeLoadingCss = TREE_NODE_LOADING_CSS; functionalHomeSiteUtil = new FunctionalHomeSiteUtil(this); functionalGroupsSiteUtil = new FunctionalGroupsSiteUtil(this); @@ -535,14 +538,6 @@ public class FunctionalUtil { public String openBusinessPath(Selenium browser, String businessPath){ idle(browser); - try { - //FIXME:JK: work-around - Thread.sleep(5000); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - /* cut off http:// or domain */ if(businessPath.startsWith("http://")){ //businessPath = businessPath.substring(businessPath.indexOf('/', 7)); @@ -1563,4 +1558,12 @@ public class FunctionalUtil { public void setTreeNodeCss(String treeNodeCss) { this.treeNodeCss = treeNodeCss; } + + public String getTreeNodeLoadingCss() { + return treeNodeLoadingCss; + } + + public void setTreeNodeLoadingCss(String treeNodeLoadingCss) { + this.treeNodeLoadingCss = treeNodeLoadingCss; + } } -- GitLab