Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does Selenium .set_script_timeout(n) do and how is it different from driver.set_page_load_timeout(n)?

In context of python selenium, I don't quite understand the exact difference of driver.set_page_load_timeout(n) VS. driver.set_script_timeout(n). Both seem to be used interchangeable to set a timeout to load an URL via driver.get(URL), but sometimes also together.

Scenario 1:

driver.set_page_load_timeout(5)
website = driver.get(URL)
results = do_magic(driver, URL)

Scenario 2:

driver.set_script_timeout(5)
website = driver.get(URL)
results = do_magic(driver, URL)

How do both scenarios differ? Which situations trigger a timeout in one but not the other scenario?

like image 424
sudonym Avatar asked Feb 23 '18 04:02

sudonym


People also ask

What is a driver Set_page_load_timeout?

This article revolves around set_page_load_timeout driver method in Selenium. set_page_load_timeout method sets the amount of time to wait for a page load to complete before throwing an error. Syntax – driver.set_page_load_timeout(time_To_wait)

What is the use of pageLoadTimeout in Selenium?

pageLoadTimeout in Selenium This sets the time to wait for a page to load completely before throwing an error. If the timeout is negative, page loads can be indefinite.

What is the default page load timeout in Selenium WebDriver?

The page load timeout is set to -1 by default. This means that Selenium will wait indefinitely for the page to load.


1 Answers

As per the Selenium-Python API Docs set_page_load_timeout(n) and set_script_timeout(n) both are timeout methods which are used to configure the webdriver instance to abide by during the program execution.

set_page_load_timeout(time_to_wait)

set_page_load_timeout(time_to_wait) sets the amount of time to wait for a page load to complete before throwing an error and is defined as :

    def set_page_load_timeout(self, time_to_wait):
    """
    Set the amount of time to wait for a page load to complete
       before throwing an error.

    :Args:
     - time_to_wait: The amount of time to wait

    :Usage:
        driver.set_page_load_timeout(30)
    """
    try:
        self.execute(Command.SET_TIMEOUTS, {
        'pageLoad': int(float(time_to_wait) * 1000)})
    except WebDriverException:
        self.execute(Command.SET_TIMEOUTS, {
        'ms': float(time_to_wait) * 1000,
        'type': 'page load'})

Here you can find a detailed discussion on set_page_load_timeout

set_script_timeout(time_to_wait)

set_script_timeout(time_to_wait) sets the amount of time that the script should wait during an execute_async_script (Javascript / AJAX Call) call before throwing an error and is defined as :

    def set_script_timeout(self, time_to_wait):
    """
    Set the amount of time that the script should wait during an
       execute_async_script call before throwing an error.

    :Args:
     - time_to_wait: The amount of time to wait (in seconds)

    :Usage:
        driver.set_script_timeout(30)
    """
    if self.w3c:
        self.execute(Command.SET_TIMEOUTS, {
        'script': int(float(time_to_wait) * 1000)})
    else:
        self.execute(Command.SET_SCRIPT_TIMEOUT, {
        'ms': float(time_to_wait) * 1000})
like image 62
undetected Selenium Avatar answered Nov 10 '22 01:11

undetected Selenium