Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is SetScriptTimeout-Webdriver

when SetScriptTimeout should be used and please provide me any example.

I know the defn

Sets the amount of time to wait for an asynchronous script to finish execution before throwing an error. If the timeout is negative, then the script will be allowed to run indefinitely.

but not sure what it does exactly.

like image 894
J_Coder Avatar asked Jun 29 '15 03:06

J_Coder


Video Answer


1 Answers

You've got two answers already, neither of which I find explain clearly the point of setting a script timeout.

First, it is important the script timeout affects only JavaScript code executed with executeAsyncScript and nothing else. In particular, executeScript is not affected by it.

So why do you want to set a timeout for executeAsyncScript? Chandan Nayak correctly explained that the default timeout is 0s so you have to change this timeout if you want to use executeAsyncScript with asynchronous scripts that actually perform some work. But why not just set it to -1 and be done with it? After all, if you set it to -1 then you turn off the timeout. So you won't get any timeouts anymore. Mission accomplished, right? Nope.

What you want to do is set the timeout to a value that allows the code you use with executeAsyncScript to perform it works while at the same time detect when a script has gone rogue. For instance, if from experience you know that a script you pass to executeAsyncScript is going to be done in 2 seconds or less (except perhaps in extremely unusual circumstances), then you set the timeout to 2 seconds so that if there is a bug somewhere and the code never terminates, you get a timeout after 2 seconds. Otherwise, Selenium will happily wait forever for the script to complete.

like image 85
Louis Avatar answered Nov 15 '22 10:11

Louis