user1413
user1413

Reputation: 537

Selinium: Wait function and if condition to repeat

In my automation project.

Browser: Firefox

I would like add a wait function without any specific time

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(7));
IWebElement query1 = driver.FindElement(By.("continue"));

How can do that?

Also to verify that if another page did not load then repeat the previous function. The reason why I am doing this is because sometimes browser does not change the page. It actually stays on that same page.

Besides this is below thing possible in Selenium

  1. Clear Cache and Cookie for last hour
  2. Opening URL in new tab (In already opened browser rather then opening new window)

Upvotes: 1

Views: 1073

Answers (1)

ddavison
ddavison

Reputation: 29032

One thing that has worked consistently for me (regarding waits) is used in the conductor framework..

Here's some pseudo-code you can attempt to recreate in C#:

    while (size == 0) {
        size = driver.findElements(by).size();
        if (attempts == MAX_ATTEMPTS) fail(String.format("Could not find %s after %d seconds",
                                                             by.toString(),
                                                             MAX_ATTEMPTS));
        attempts++;
        try {
            Thread.sleep(1000); // sleep for 1 second.
        } catch (Exception x) {
            fail("Failed due to an exception during Thread.sleep!");
            x.printStackTrace();
        }
    }

basically this loops through the size of the selector passed, and will poll each second. Another way you can do it, is just by conditions.

Some more pseudo-code:

function waitForElement(element) {
  Wait.Until(ExpectedConditions.elementIsClickable(element), 10.Seconds)
}

And to your questions -

Can Selenium...

  1. Clear Cache and Cookie for last hour Opening URL in new tab (In already opened browser rather then opening new window)
  2. Opening URL in new tab (In already opened browser rather then opening new window)
  1. If you write your tests cases correctly by making them independent of one-another and not re-using the same browser over and over, this happens automatically. When Selenium opens a new window, it starts fresh with an entirely fresh profile - meaning it has "nothing" in the cache from the start.

  2. Selenium does not (and will never) know the difference between a tab and a window. To Selenium, it's just a handle.

Source:

Upvotes: 1

Related Questions