0

When system call below given waitforelement method, its take lot of time to search element. Any reason why? or something is wrong in my code give below:

public void WaitForElement(int source, String elementName)
        throws InterruptedException {
    try {
        for (int second = 0; second <= 60; second++) {
            Thread.sleep(1000);
            switch (source) {
            case 1:
                if (isElementPresent(By.id(elementName))) {
                    System.out.println("Element Found :" + elementName);
                    second = 60;
                    break;
                } else {
                }

            case 2:
                if (isElementPresent(By.xpath(elementName))) {
                    System.out.println("Element Found :" + elementName);
                    second = 60;
                    break;
                }
            case 3:
                if (isElementPresent(By.name(elementName))) {
                    System.out.println("Element Found :" + elementName);
                    second = 60;
                    break;
                }

            case 4:
                if (isElementPresent(By.className(elementName))) {
                    System.out.println("Element Found :" + elementName);
                    second = 60;
                    break;
                }
            case 5:
                if (isElementPresent(By.cssSelector(elementName))) {
                    System.out.println("Element Found :" + elementName);
                    second = 60;
                    break;
                }
            case 6:
                if (isElementPresent(By.linkText(elementName))) {
                    System.out.println("Element Found :" + elementName);
                    second = 60;
                    break;
                }
            case 7:
                if (isElementPresent(By.partialLinkText(elementName))) {
                    System.out.println("Element Found :" + elementName);
                    second = 60;
                    break;
                }
            case 8:
                if (isElementPresent(By.tagName(elementName))) {
                    System.out.println("Element Found :" + elementName);
                    second = 60;
                    break;
                }
            default:
                System.out.println("Element not found: " + elementName);
            }
        }
    } catch (Exception e) {
        System.out.println(e);
    }
    Thread.sleep(1000);
}
Arran
  • 24,648
  • 6
  • 68
  • 78
Karim Narsindani
  • 434
  • 3
  • 14
  • 38
  • 2
    I suspect it's because of the implicit wait. Secondly, this seems an exact duplicate of the `WebDriver`/`FluentWait` code... – Arran Mar 03 '14 at 09:28
  • The above method will at least take 2 seconds to complete. Either think about changing sleep to lesser time or implementing implicit and explicit waiting – Pavel Janicek Mar 03 '14 at 10:25
  • @Arran thanks for you input, i found the link http://stackoverflow.com/questions/12041013/selenium-webdriver-fluent-wait-works-as-expected-but-implicit-wait-does-not, using wait condition as give I am able to resolve the problem. – Karim Narsindani Mar 03 '14 at 11:46
  • @PavelJanicek, I thank you too, as I found that for loop is running even after element is found as i have given condition in loop 'second <= 60;' after element is found 'second = 60;' this make for loop to run even after element is found and wait for 1 second unwanted. – Karim Narsindani Mar 03 '14 at 11:52
  • do not forget that at the end of your switch case there is another Thread.sleep. So that causes the one second extra... – Pavel Janicek Mar 03 '14 at 12:12

0 Answers0