Last active
January 6, 2023 22:05
Revisions
-
austenjt revised this gist
Feb 5, 2014 . 1 changed file with 16 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,16 @@ Wait<WebDriver> wait = new FluentWait<WebDriver>(driver) .withTimeout( 30, TimeUnit.SECONDS ) .pollingEvery( 5, TimeUnit.SECONDS ) .ignoring( NoSuchElementException.class, StaleElementReferenceException.class ); // using a customized expected condition WebElement foo1 = wait.until(new Function<WebDriver, WebElement>() { public WebElement apply(WebDriver driver) { return driver.findElement(By.id("foo1")); } }); // using a built-in expected condition WebElement foo2 = wait.until( ExpectedConditions .presenceOfElementLocated( By.id("foo2") ) ); // careful with this next one. it requires visibility attribute on html tag WebElement foo3 = wait.until( ExpectedConditions .visibilityOfElementLocated( By.id("foo3") ) ); -
austenjt revised this gist
Feb 5, 2014 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -15,7 +15,7 @@ public static WebElement getElementByLocator( final By locator ) { while ( (System.currentTimeMillis() - startTime) < 91000 ) { LOGGER.info( "Searching for element. Try number " + (tries++) ); try { we = wait.until( ExpectedConditions.presenceOfElementLocated( locator ) ); found = true; break; } catch ( StaleElementReferenceException e ) { -
djangofan revised this gist
Dec 26, 2013 . 1 changed file with 3 additions and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,2 +1,4 @@ // create a demonstration of using a Closure instead of the typical inner class // pattern for @Override that you see above in method #3 wait.until( webDriver -> webDriver.findElement( By.id( "foo" ) ) ); -
djangofan revised this gist
Aug 6, 2013 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,2 @@ // create a demonstration of using a Closure instead of the typical inner class // pattern for @Override that you see above in method #3 -
djangofan revised this gist
Apr 1, 2013 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -17,6 +17,7 @@ public static WebElement getElementByLocator( final By locator ) { try { we = wait.until( ExpectedConditions.visibilityOfElementLocated( locator ) ); found = true; break; } catch ( StaleElementReferenceException e ) { LOGGER.info( "Stale element: \n" + e.getMessage() + "\n"); } -
djangofan revised this gist
Mar 30, 2013 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -15,7 +15,7 @@ public static WebElement getElementByLocator( final By locator ) { while ( (System.currentTimeMillis() - startTime) < 91000 ) { LOGGER.info( "Searching for element. Try number " + (tries++) ); try { we = wait.until( ExpectedConditions.visibilityOfElementLocated( locator ) ); found = true; } catch ( StaleElementReferenceException e ) { LOGGER.info( "Stale element: \n" + e.getMessage() + "\n"); -
djangofan revised this gist
Mar 30, 2013 . 1 changed file with 15 additions and 15 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -3,30 +3,30 @@ // times within the 90 second limit. So, the method will run // between 15-90 seconds, depending on the situation of failure. public static WebElement getElementByLocator( final By locator ) { LOGGER.info( "Get element by locator: " + locator.toString() ); final long startTime = System.currentTimeMillis(); Wait<WebDriver> wait = new FluentWait<WebDriver>( driver ) .withTimeout(30, TimeUnit.SECONDS) .pollingEvery(5, TimeUnit.SECONDS) .ignoring( StaleElementReferenceException.class ) ; int tries = 0; boolean found = false; WebElement we = null; while ( (System.currentTimeMillis() - startTime) < 91000 ) { LOGGER.info( "Searching for element. Try number " + (tries++) ); try { we = wait.until( ExpectedConditions.visibilityOfElementLocated( locator ); found = true; } catch ( StaleElementReferenceException e ) { LOGGER.info( "Stale element: \n" + e.getMessage() + "\n"); } } long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; if ( found ) { LOGGER.info("Found element after waiting for " + totalTime + " milliseconds." ); } else { LOGGER.info( "Failed to find element after " + totalTime + " milliseconds." ); } return we; } -
djangofan revised this gist
Mar 30, 2013 . 1 changed file with 12 additions and 4 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -3,22 +3,30 @@ // times within the 90 second limit. So, the method will run // between 15-90 seconds, depending on the situation of failure. public static WebElement getElementByLocator( final By locator ) { LOGGER.info( "Get element by locator: " + locator.toString() ); final long startTime = System.currentTimeMillis(); Wait<WebDriver> wait = new FluentWait<WebDriver>( driver ) .withTimeout(30, TimeUnit.SECONDS) .pollingEvery(5, TimeUnit.SECONDS) .ignoring( StaleElementReferenceException.class ) ; int try = 0; boolean found = false; while ( (System.currentTimeMillis() - startTime) < 91000 ) { LOGGER.info( "Searching for element. Try number " + (try+=1) ); try { WebElement we = wait.until( ExpectedCondition.visibilityOfElementLocated( locator ); found = true; } catch ( StaleElementReferenceException e ) { LOGGER.info( "Stale element: \n" + e.getMessage() + "\n"); } } long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; if ( found ) { LOGGER.info("Found element after waiting for " + totalTime + " milliseconds." ); return we; } else { LOGGER.info( "Failed to find element after " + totalTime + " milliseconds." ); } return null; } -
djangofan revised this gist
Mar 30, 2013 . 1 changed file with 24 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,24 @@ // Another approach, after everything I have learned, that might // also be effective. With this method, a wait timeout occurs 3 // times within the 90 second limit. So, the method will run // between 15-90 seconds, depending on the situation of failure. public static WebElement getElementByLocator( final By locator ) { LOGGER.info( "Get element by locator: " + locator.toString() ); final long startTime = System.currentTimeMillis(); Wait<WebDriver> wait = new FluentWait<WebDriver>( driver ) .withTimeout(30, TimeUnit.SECONDS) .pollingEvery(5, TimeUnit.SECONDS) .ignoring( StaleElementReferenceException.class ) ; while ( (System.currentTimeMillis() - startTime) < 91000 ) { LOGGER.info( "Searching for element..." ); try { WebElement we = wait.until( ExpectedCondition.visibilityOfElementLocated( locator ); } catch ( StaleElementReferenceException e ) { LOGGER.info( "Stale element: \n" + e.getMessage() + "\n"); } } long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; LOGGER.info("Finished click after waiting for " + totalTime + " milliseconds."); return we; } -
djangofan revised this gist
Mar 21, 2013 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,7 +1,7 @@ // I realized that the try-catch doesn't really need to be within // the ExpectedCondition final block. By moving the try-catch outside // I would have access to the WebElement returned from findElement(). // So, I can create my own Boolean expected condition while I loop to // hopefully accomplish a similar thing as method3. public static WebElement getElementByLocator( By locator ) { staticlogger.info( "Get element by locator: " + locator.toString() ); -
djangofan revised this gist
Mar 21, 2013 . 1 changed file with 1 addition and 2 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,4 @@ // This was my breakthrough. My first partially working code. public static void clickByLocator( final By locator ) { staticlogger.info( "Click by locator: " + locator.toString() ); final long startTime = System.currentTimeMillis(); -
djangofan revised this gist
Mar 18, 2013 . 1 changed file with 14 additions and 13 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -6,28 +6,29 @@ public static WebElement getElementByLocator( By locator ) { staticlogger.info( "Get element by locator: " + locator.toString() ); long startTime = System.currentTimeMillis(); driver.manage().timeouts().implicitlyWait( 9, TimeUnit.SECONDS ); WebElement we = null; boolean unfound = true; int tries = 0; while ( unfound && tries < 20 ) { tries += 1; staticlogger.info("Locating remaining time: " + (180-(9*(tries-1) )) + " seconds." ); try { we = driver.findElement( locator ); unfound = false; // FOUND IT } catch ( StaleElementReferenceException ser ) { staticlogger.info( "ERROR: Stale element. " + locator.toString() ); unfound = true; } catch ( NoSuchElementException nse ) { staticlogger.info( "ERROR: No such element. " + locator.toString() ); unfound = true; } catch ( Exception e ) { staticlogger.info( e.getMessage() ); } } long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; staticlogger.info("Finished click after waiting for " + totalTime + " milliseconds."); driver.manage().timeouts().implicitlyWait( DEFAULT_IMPLICIT_WAIT, TimeUnit.SECONDS ); return we; } -
djangofan revised this gist
Mar 15, 2013 . 1 changed file with 28 additions and 28 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -3,31 +3,31 @@ // I would have access to the WebElement returned from findElement(). // So, I can create my own Boolean expected condition while loop to // hopefully accomplish a similar thing as method3. public static WebElement getElementByLocator( By locator ) { staticlogger.info( "Get element by locator: " + locator.toString() ); long startTime = System.currentTimeMillis(); driver.manage().timeouts().implicitlyWait( 5, TimeUnit.SECONDS ); WebElement we = null; boolean unfound = true; while ( unfound ) { try { we = driver.findElement( locator ); unfound = false; // FOUND IT } catch ( StaleElementReferenceException e ) { staticlogger.info( "Stale element: \n" + e.getMessage() + "\n"); staticlogger.info("Trying again for availability of element..."); unfound = true; try { Thread.sleep(4000); } catch (InterruptedException e1) { e1.printStackTrace(); } } } // and finally the cleanup long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; staticlogger.info("Finished click after waiting for " + totalTime + " milliseconds."); driver.manage().timeouts().implicitlyWait( DEFAULT_IMPLICIT_WAIT, TimeUnit.SECONDS ); return we; } -
djangofan revised this gist
Mar 15, 2013 . 1 changed file with 28 additions and 25 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -3,28 +3,31 @@ // I would have access to the WebElement returned from findElement(). // So, I can create my own Boolean expected condition while loop to // hopefully accomplish a similar thing as method3. public static WebElement getElementByLocator( By locator ) { staticlogger.info( "Get element by locator: " + locator.toString() ); long startTime = System.currentTimeMillis(); driver.manage().timeouts().implicitlyWait( 5, TimeUnit.SECONDS ); WebElement we = null; boolean unfound = true; while ( unfound ) { try { we = driver.findElement( locator ); unfound = false; // FOUND IT } catch ( StaleElementReferenceException e ) { staticlogger.info( "Stale element: \n" + e.getMessage() + "\n"); staticlogger.info("Trying again for availability of element..."); unfound = true; try { Thread.sleep(4000); } catch (InterruptedException e1) { e1.printStackTrace(); } } } // and finally the cleanup long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; staticlogger.info("Finished click after waiting for " + totalTime + " milliseconds."); driver.manage().timeouts().implicitlyWait( DEFAULT_IMPLICIT_WAIT, TimeUnit.SECONDS ); return we; } -
djangofan revised this gist
Mar 15, 2013 . 1 changed file with 30 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,30 @@ // I realized that the try-catch doesn't really need to be within // the ExpectedCondition final block. By moving the try-catch outside // I would have access to the WebElement returned from findElement(). // So, I can create my own Boolean expected condition while loop to // hopefully accomplish a similar thing as method3. public static WebElement getElementByLocator( By locator ) { staticlogger.info( "Get element by locator: " + locator.toString() ); final long startTime = System.currentTimeMillis(); driver.manage().timeouts().implicitlyWait( 5, TimeUnit.SECONDS ); WebElement we = null; boolean unfound = true; while ( unfound ) { try { we = driver.findElement( locator ); unfound = false; // FOUND IT } catch ( StaleElementReferenceException e ) { staticlogger.info( "Stale element: \n" + e.getMessage() + "\n"); staticlogger.info("Trying again for availability of element..."); unfound = true; waitSeconds(4); } } } // and finally the cleanup driver.manage().timeouts().implicitlyWait( DEFAULT_IMPLICIT_WAIT, TimeUnit.SECONDS ); long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; staticlogger.info("Finished click after waiting for " + totalTime + " milliseconds."); return we; } -
djangofan revised this gist
Mar 13, 2013 . 1 changed file with 4 additions and 2 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,7 @@ // An extension of method3 although I am unsure if I trust it // because it re-gets the element AND the element gets assigned // again after returning from the method. A few opportunities // to go stale. public static WebElement getElementByLocator( final By locator ) { staticlogger.info( "Get element by locator: " + locator.toString() ); final long startTime = System.currentTimeMillis(); -
djangofan revised this gist
Mar 13, 2013 . 5 changed files with 74 additions and 118 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,23 +1,16 @@ // I gleamed this method from the Selenium Google forum. // The .ignoring fluent method was a huge hint // to the eventual solution I found but it still didn't work // because I needed the ExpectedCondition apply method to give // me some kind of message on failures. public void waitForElementPresent(final By by, int timeout){ WebDriverWait wait = (WebDriverWait)new WebDriverWait(driver,timeout) .ignoring(StaleElementReferenceException.class); wait.until(new ExpectedCondition<Boolean>(){ @Override public Boolean apply(WebDriver webDriver) { WebElement element = webDriver.findElement(by); return element != null && element.isDisplayed(); } }); } This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,22 +1,29 @@ // This is the most effective method I could find for // locating elements reliably. public static void clickByLocator( final By locator ) { staticlogger.info( "Click by locator: " + locator.toString() ); final long startTime = System.currentTimeMillis(); driver.manage().timeouts().implicitlyWait( 5, TimeUnit.SECONDS ); Wait<WebDriver> wait = new FluentWait<WebDriver>( driver ) .withTimeout(90000, TimeUnit.MILLISECONDS) .pollingEvery(5500, TimeUnit.MILLISECONDS); //.ignoring( StaleElementReferenceException.class ); wait.until( new ExpectedCondition<Boolean>() { @Override public Boolean apply( WebDriver webDriver ) { try { webDriver.findElement( locator ).click(); return true; } catch ( StaleElementReferenceException e ) { staticlogger.info( e.getMessage() + "\n"); staticlogger.info("Trying again..."); return false; } } } ); driver.manage().timeouts().implicitlyWait( DEFAULT_IMPLICIT_WAIT, TimeUnit.SECONDS ); long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; staticlogger.info("Finished click after waiting for " + totalTime + " milliseconds."); }
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,16 +1,34 @@ // an extension of method3 although I am unsure if I trust it // because it re-gets the element public static WebElement getElementByLocator( final By locator ) { staticlogger.info( "Get element by locator: " + locator.toString() ); final long startTime = System.currentTimeMillis(); driver.manage().timeouts().implicitlyWait( 5, TimeUnit.SECONDS ); Wait<WebDriver> wait = new FluentWait<WebDriver>( driver ) .withTimeout(90000, TimeUnit.MILLISECONDS) .pollingEvery(5500, TimeUnit.MILLISECONDS); wait.until( new ExpectedCondition<Boolean>() { @Override public Boolean apply( WebDriver webDriver ) { try { webDriver.findElement( locator ).getTagName(); return true; } catch ( StaleElementReferenceException e ) { staticlogger.info( e.getMessage() + "\n"); staticlogger.info("Trying again for availability of element..."); return false; } } } ); WebElement we = null; try { we = driver.findElement( locator ); // is this error prone? } catch ( StaleElementReferenceException e ) { staticlogger.info( "Stale element: \n" + e.getMessage() + "\n"); } driver.manage().timeouts().implicitlyWait( DEFAULT_IMPLICIT_WAIT, TimeUnit.SECONDS ); long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; staticlogger.info("Finished click after waiting for " + totalTime + " milliseconds."); return we; } This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,29 +0,0 @@ This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,33 +0,0 @@ -
djangofan revised this gist
Mar 13, 2013 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -21,7 +21,7 @@ public Boolean apply( WebDriver webDriver ) { } ); WebElement we = null; try { we = driver.findElement( locator ); // is this error prone? } catch ( StaleElementReferenceException e ) { staticlogger.info( "Stale element: \n" + e.getMessage() + "\n"); } -
djangofan revised this gist
Mar 13, 2013 . 1 changed file with 33 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,33 @@ // an extension of method4 although I am unsure if I trust it public static WebElement getElementByLocator( final By locator ) { staticlogger.info( "Get element by locator: " + locator.toString() ); final long startTime = System.currentTimeMillis(); driver.manage().timeouts().implicitlyWait( 5, TimeUnit.SECONDS ); Wait<WebDriver> wait = new FluentWait<WebDriver>( driver ) .withTimeout(90000, TimeUnit.MILLISECONDS) .pollingEvery(5500, TimeUnit.MILLISECONDS); wait.until( new ExpectedCondition<Boolean>() { @Override public Boolean apply( WebDriver webDriver ) { try { webDriver.findElement( locator ).getTagName(); return true; } catch ( StaleElementReferenceException e ) { staticlogger.info( e.getMessage() + "\n"); staticlogger.info("Trying again for availability of element..."); return false; } } } ); WebElement we = null; try { we = driver.findElement( locator ); } catch ( StaleElementReferenceException e ) { staticlogger.info( "Stale element: \n" + e.getMessage() + "\n"); } driver.manage().timeouts().implicitlyWait( DEFAULT_IMPLICIT_WAIT, TimeUnit.SECONDS ); long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; staticlogger.info("Finished click after waiting for " + totalTime + " milliseconds."); return we; } -
djangofan revised this gist
Mar 13, 2013 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,5 @@ // This method is not effective. I had mixed results with this. // I didn't stay with this long enough to determine the actual problem. public static void clickByLocator( By locator ) { boolean search = true; int weWait = 30; -
djangofan revised this gist
Mar 13, 2013 . 5 changed files with 10 additions and 10 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,5 @@ // This is the official Selenium documention endorsed method of waiting for elements. // This method is ineffective because it still suffers from // the stale element exception. public static void clickByLocator ( final By locator ) { WebElement myDynamicElement = ( new WebDriverWait(driver, 10)) This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,5 @@ // This method is not effective. The while loop wont throw an error but // findElements is not guaranteed to return a non-stale element. public static WebElement safeGetElementByLocator( By locator ) { int weWait = 10; int cycle = 1; // 10 cycles is 280 This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,5 @@ // This method is not effective. // Any exception that occurs will eject us out of the loop. public static void clickByLocator( By locator ) { boolean search = true; int weWait = 30; This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,5 @@ // I gleamed this method from the Selenium Google forum. // The .ignoring fluent method was a huge hint // to the eventual solution I found but it still didn't work // because I needed the ExpectedCondition apply method to give // me some kind of message on failures. This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,5 @@ // This is the most effective method I could find for // locating elements reliably. public static void clickByLocator( final By locator ) { staticlogger.info( "Click by locator: " + locator.toString() ); final long startTime = System.currentTimeMillis(); -
djangofan revised this gist
Mar 13, 2013 . 1 changed file with 4 additions and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,8 @@ // I gleamed this method from the Selenium Google forum // notice the .ignoring fluent method. this was a huge hint // to the eventual solution I found but it still didn't work // because I needed the ExpectedCondition apply method to give // me some kind of message on failures. public void waitForElementPresent(final By by, int timeout){ WebDriverWait wait = (WebDriverWait)new WebDriverWait(driver,timeout) .ignoring(StaleElementReferenceException.class); -
djangofan revised this gist
Mar 12, 2013 . 1 changed file with 24 additions and 23 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,28 +1,29 @@ // this is the most effective method I could find for // locating elements reliably public static void clickByLocator( final By locator ) { staticlogger.info( "Click by locator: " + locator.toString() ); final long startTime = System.currentTimeMillis(); driver.manage().timeouts().implicitlyWait( 5, TimeUnit.SECONDS ); Wait<WebDriver> wait = new FluentWait<WebDriver>( driver ) .withTimeout(90000, TimeUnit.MILLISECONDS) .pollingEvery(5500, TimeUnit.MILLISECONDS); //.ignoring( StaleElementReferenceException.class ); wait.until( new ExpectedCondition<Boolean>() { @Override public Boolean apply( WebDriver webDriver ) { try { webDriver.findElement( locator ).click(); return true; } catch ( StaleElementReferenceException e ) { staticlogger.info( e.getMessage() + "\n"); staticlogger.info("Trying again..."); return false; } } } ); driver.manage().timeouts().implicitlyWait( DEFAULT_IMPLICIT_WAIT, TimeUnit.SECONDS ); long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; staticlogger.info("Finished click after waiting for " + totalTime + " milliseconds."); }
-
djangofan revised this gist
Mar 12, 2013 . 1 changed file with 26 additions and 13 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,15 +1,28 @@ // this is the most effective method I could find for // locating elements reliably public static void clickByLocator( final By locator ) { staticlogger.info( "Click by locator: " + locator.toString() ); final long startTime = System.currentTimeMillis(); driver.manage().timeouts().implicitlyWait( 5, TimeUnit.SECONDS ); Wait<WebDriver> wait = new FluentWait<WebDriver>( driver ) .withTimeout(90000, TimeUnit.MILLISECONDS) .pollingEvery(5500, TimeUnit.MILLISECONDS); //.ignoring( StaleElementReferenceException.class ); wait.until( new ExpectedCondition<Boolean>() { @Override public Boolean apply( WebDriver webDriver ) { try { webDriver.findElement( locator ).click(); return true; } catch ( StaleElementReferenceException e ) { staticlogger.info( e.getMessage() + "\n"); staticlogger.info("Trying again..."); return false; } } } ); driver.manage().timeouts().implicitlyWait( DEFAULT_IMPLICIT_WAIT, TimeUnit.SECONDS ); long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; staticlogger.info("Finished click after waiting for " + totalTime + " milliseconds."); } -
djangofan revised this gist
Mar 12, 2013 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -2,7 +2,7 @@ // this method is ineffective because it still suffers from // the stale element exception. public static void clickByLocator ( final By locator ) { WebElement myDynamicElement = ( new WebDriverWait(driver, 10)) .until( ExpectedConditions.presenceOfElementLocated( locator ) ); myDynamicElement.click(); } -
djangofan revised this gist
Mar 12, 2013 . 2 changed files with 8 additions and 5 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,8 @@ // this is the official Selenium documention endorsed method of waiting for elements // this method is ineffective because it still suffers from // the stale element exception. public static void clickByLocator ( final By locator ) { WebElement myDynamicElement = ( new WebDriverWait(driver, 10)) .until( ExpectedConditions.presenceOfElementLocated( locator ) ); myDynamicElement.click(); } This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +0,0 @@ -
djangofan revised this gist
Mar 12, 2013 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,4 +1,4 @@ // this method is not effective. the while loop wont throw an error but // findElements is not guaranteed to return a non-stale element public static WebElement safeGetElementByLocator( By locator ) { int weWait = 10; -
djangofan revised this gist
Mar 12, 2013 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,3 +1,5 @@ // this is the most effective method I could find for // locating elements reliably public static void clickByLocator( final By locator ) { // uses default implicit timeout defined in test framework WebDriverWait wait = (WebDriverWait)new WebDriverWait( driver, 185).ignoring( StaleElementReferenceException.class ); -
djangofan revised this gist
Mar 12, 2013 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,3 +1,5 @@ // I gleamed this method from the Selenium Google forum // notice the .ignoring fluent method. this is a game changer. public void waitForElementPresent(final By by, int timeout){ WebDriverWait wait = (WebDriverWait)new WebDriverWait(driver,timeout) .ignoring(StaleElementReferenceException.class); -
djangofan renamed this gist
Mar 12, 2013 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes.
NewerOlder