Skip to main content

Extends Selenium WebDriver classes to include the request function from the Requests library, while doing all the needed cookie and request headers handling.

Before the actual request is made, a local HTTP server is started that serves a single request made by the webdriver instance to get the “standard” HTTP request headers sent by this webdriver; these are cached (only happens once during its lifetime) and later used in conjunction with the Requests library to make the requests look identical to those that would have been sent by the webdriver. Cookies held by the webdriver instance are added to the request headers and those returned in a response automatically set for the webdriver instance.

Usage

# Import any WebDriver class that you would usually import from
# selenium.webdriver from the seleniumrequests module
from seleniumrequests import Firefox


webdriver = Firefox()
response = webdriver.request('GET', 'http://google.com/')
print(response)

Installation

pip install selenium-requests

Details

The request method supports two additional arguments:

  • find_window_handle_timeout (default: -1 seconds)

  • page_load_timeout (default: -1 seconds)

If the timeout is negative, then the script will be allowed to run indefinitely (similarly to Selenium WebDriver’s default behaviour).

The first is needed because there is no reliable way to create a new window handle with the Selenium WebDriver interface, so a new handle has to be spawned via JavaScript and subsequently found to be able to get or set cookies with the WebDriver. There are two methods to do this: The first involves simply comparing the set of window handles before and after the JavaScript was executed and finding the difference. If the difference is unreliable (0 or more than 1 window handles found) an alternative less reliable method is used: the top-level domain for each frame is compared to the top-level domain of the requested URL (JavaScript redirects are not supported when this method is used). If no results are found, an additional GET request is made to the requested domain to check for a potential redirect. Whether there was a redirect or not, the old or new top-level domain will now be searched for find_window_handle_timeout seconds until it is either found or a TimeoutException is raised.

The second is needed mostly because of PhantomJS. Every other webdriver blocks until the current window handle is loaded, except PhantomJS. If the new window handle was found via the first method (see above) and then cookies should be set, it’s possible that an exception is raised, because the webdriver has to have switched to a window handle with the correct domain prior to setting cookies. Thus the method waits page_load_timeout seconds before raising a TimeoutException.

Release files for selenium-requests 1.2.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for selenium-requests 1.2.5
File Size Uploaded
selenium-requests-1.2.5.zip 14.4 kB Details

Release files / selenium-requests-1.2.5.zip

Download URL selenium-requests-1.2.5.zip
Size 14.4 kB
Tags Source
SHA-256 checksum
How to use checksums
cbd3ee8a64c01424141db48160fcf346d6711ef5ab9ea41f07e50acdd98f3075
BLAKE2b-256 checksum
How to use checksums
1addc6efee6077d5f17a5992b5354a62ea1d3828a0b38bdec03653c9a606994f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3

1 release file

1.2.7

1 release file

1.2.6

1 release file

This release

1.2.5 This release

1 release file

1.2.4

1 release file

1.2.1

1 release file

1.2.0

1.1.1

1.1.0

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.2

1.0.1

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page