96

I´m using the Selenium IDE for Firefox and searching for a wait command. My problem is that I want to test a website with a embedded external map. This external map needs 3-5 seconds to load.

My commands:

open /Page/mysite.html
//Wait Command? (5 seconds)
ClickAndWait link=do something
LaPhi
  • 5,675
  • 21
  • 56
  • 78

11 Answers11

115

Use the pause command and enter the number of milliseconds in the Target field.

Set speed to fastest (Actions --> Fastest), otherwise it won't work.

bdx
  • 3,316
  • 4
  • 32
  • 65
Adam Prax
  • 6,413
  • 3
  • 30
  • 31
93

This will delay things for 5 seconds:

Command: pause
Target: 5000
Value:

This will delay things for 3 seconds:

Command: pause
Target: 3000
Value:

Documentation:

http://release.seleniumhq.org/selenium-core/1.0/reference.html#pause

enter image description here enter image description here

JustBeingHelpful
  • 18,332
  • 38
  • 160
  • 245
6

For those working with ant, I use this to indicate a pause of 5 seconds:

<tr>
    <td>pause</td>
    <td>5000</td>
    <td></td>
</tr>

That is, target: 5000 and value empty. As the reference indicates:

pause(waitTime)

Arguments:

  • waitTime - the amount of time to sleep (in milliseconds)

Wait for the specified amount of time (in milliseconds)

fedorqui
  • 275,237
  • 103
  • 548
  • 598
4

Your best bet is probably waitForCondition and writing a javascript function that returns true when the map is loaded.

highlycaffeinated
  • 19,729
  • 9
  • 60
  • 91
2

In case when you use Chrome exctantion you can set timeout in 'Target'. It helps for me.

enter image description here

Bogdan
  • 498
  • 4
  • 9
1

This will do what you are looking for in C# (WebDriver/Selenium 2.0)

var browser = new FirefoxDriver();
var overallTimeout = Timespan.FromSeconds(10);
var sleepCycle = TimeSpan.FromMiliseconds(50);
var wait = new WebDriverWait(new SystemClock(), browser, overallTimeout, sleepCycle);
var hasTimedOut = wait.Until(_ => /* here goes code that looks for the map */);

And never use Thread.Sleep because it makes your tests unreliable

Pawel Pabich
  • 2,404
  • 4
  • 22
  • 33
0

Before the command clickAndWait add the following code so the script will wait until the specific link to be visible:

   <tr>
        <td>waitForVisible</td>
        <td>link=do something</td>
        <td></td>
    </tr>

The practice of using the wait commands instead of pause is most of the times more efficient and more stable.

george
  • 84
  • 2
0

This will wait until your link has appeared, and then you can click it.

Command: waitForElementPresent Target: link=do something Value:

0

One that I've found works for the site I test is this one:

waitForCondition | selenium.browserbot.getUserWindow().$.active==0 | 20000

Klendathu

Klendathu
  • 793
  • 1
  • 12
  • 20
0

In Chrome, For "Selenium IDE", I was also struggling that it doesn't pause. It will pause, if you give as below:

  • Command: pause
  • Target: blank
  • Value: 10000

This will pause for 10 seconds.

TechSingh
  • 331
  • 4
  • 7
0

The pause command can be used directly in the ide in the html format.

If using java or C you could use Thread.sleep(5000). Time is in milliseconds. Other languages support "sleep 5" or time.sleep(5). you have multiple options for just waiting for a set time.

  • 2
    Thread.Sleep is never a good idea and that's why Selenium provides wait primitives. If you use them you can specify much higher timeout value which makes tests more reliable without slowing them down as the condition can be evaluated as often as it's required, eg. every 50ms. – Pawel Pabich Jul 17 '11 at 07:06
  • My response in the thread.sleep is only related to answer the question for how to make it wait in the ide. As pause gets translated into thread.sleep when you convert from html to java or c in the ide. – rattlerbred Jul 18 '11 at 13:28