Selenium WebDriver in Python (local and remote)¶
This code uses webdriver.Firefox() , to invoke the local FireFox driver.
Selenium — Remote WebDriver example¶
Instead of running locally via webdriver.Firefox() , we can use webdriver.Remote() , and have it execute from a remote machine running Selenium Server. In this case, the Sauce Labs cloud:
#!/usr/bin/env python from selenium import webdriver SAUCE_USERNAME = 'your-username-string' SAUCE_ACCESS_KEY = 'your-access-key-string' driver = webdriver.Remote( desired_capabilities=webdriver.DesiredCapabilities.FIREFOX, command_executor='http://%s:%s@ondemand.saucelabs.com:80/wd/hub' % (SAUCE_USERNAME, SAUCE_ACCESS_KEY) ) driver.get('http://saucelabs.com/test/guinea-pig') id = self.driver.session_id print 'Link to your job: https://saucelabs.com/jobs/%s' % id driver.quit()
Running a Test From Local WebDriver¶
The following Python script executes a simple test against a remote web server. It drives the local FireFox browser:
#!/usr/bin/env python import unittest from selenium import webdriver class Selenium2OnLocal(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() def test_from_local(self): self.driver.get('http://saucelabs.com/test/guinea-pig') self.assertEqual('I am a page title - Sauce Labs', self.driver.title) body = self.driver.find_element_by_css_selector('body') self.assertIn('This page is a Selenium sandbox', body.text) def tearDown(self): self.driver.quit() if __name__ == '__main__': unittest.main()
Running a Test From Sauce Labs¶
Similar Python script as above, but now executing from Sauce Labs cloud. Notice the use of webdriver.Remote() as a replacement driver:
#!/usr/bin/env python import unittest from selenium import webdriver SAUCE_USERNAME = 'your-username-string' SAUCE_ACCESS_KEY = 'your-access-key-string' class Selenium2OnSauce(unittest.TestCase): def setUp(self): self.driver = webdriver.Remote( desired_capabilities=webdriver.DesiredCapabilities.FIREFOX, command_executor='http://%s:%s@ondemand.saucelabs.com:80/wd/hub' % (SAUCE_USERNAME, SAUCE_ACCESS_KEY) ) def test_from_sauce(self): self.driver.get('http://saucelabs.com/test/guinea-pig') self.assertEqual('I am a page title - Sauce Labs', self.driver.title) body = self.driver.find_element_by_css_selector('body') self.assertIn('This page is a Selenium sandbox', body.text) def tearDown(self): id = self.driver.session_id print 'Link to your job: https://saucelabs.com/jobs/%s' % id self.driver.quit() if __name__ == '__main__': unittest.main()
© Copyright 2013-2017, Corey Goldberg Revision aa27b7da .
Versions latest Downloads pdf htmlzip On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.
1.9.8. selenium.webdriver.remote.webdriver¶
ABC’s allow custom implementations of Webdriver to be registered so that isinstance type checks will succeed.
class selenium.webdriver.remote.webdriver. WebDriver ( command_executor=’http://127.0.0.1:4444′, keep_alive=True, file_detector=None, options: Union[selenium.webdriver.common.options.BaseOptions, List[selenium.webdriver.common.options.BaseOptions]] = None ) [source] ¶
Controls a browser by sending commands to a remote server. This server is expected to be running the WebDriver wire protocol as defined at https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol.
- session_id — String ID of the browser session started and controlled by this WebDriver.
- capabilities — Dictionary of effective capabilities of this browser session as returned by the remote server. See https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities
- command_executor — remote_connection.RemoteConnection object used to execute commands.
- error_handler — errorhandler.ErrorHandler object used to handle errors.
Create a new driver that will issue commands using the wire protocol.
- command_executor — Either a string representing URL of the remote server or a custom remote_connection.RemoteConnection object. Defaults to ‘http://127.0.0.1:4444/wd/hub’.
- keep_alive — Whether to configure remote_connection.RemoteConnection to use HTTP keep-alive. Defaults to True.
- file_detector — Pass custom file detector object during instantiation. If None, then default LocalFileDetector() will be used.
- options — instance of a driver options.Options class
Adds a cookie to your current session.
- cookie_dict: A dictionary object, with required keys — “name” and “value”; optional keys — “path”, “domain”, “secure”, “httpOnly”, “expiry”, “sameSite”
driver.add_cookie('name' : 'foo', 'value' : 'bar'>) driver.add_cookie('name' : 'foo', 'value' : 'bar', 'path' : '/'>) driver.add_cookie('name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure' : True>) driver.add_cookie('name' : 'foo', 'value' : 'bar', 'sameSite' : 'Strict'>)
Injects a credential into the authenticator.
add_virtual_authenticator ( options: selenium.webdriver.common.virtual_authenticator.VirtualAuthenticatorOptions ) → None [source] ¶
Adds a virtual authenticator with the given options.
Returns a ApplicationCache Object to interact with the browser app cache.
Goes one step backward in the browser history.
returns the drivers current capabilities being used.
Closes the current window.
Creates a web element with the specified element_id .
Gets the URL of the current page.
Returns the handle of the current window.
driver.current_window_handle
Delete all cookies in the scope of the session.
Deletes a single cookie with the given name.
driver.delete_cookie('my_cookie')
returns the drivers current desired capabilities being used.
execute ( driver_command: str, params: dict = None ) → dict [source] ¶
Sends a command to be executed by a command.CommandExecutor.
- driver_command: The name of the command to execute as a string.
- params: A dictionary of named parameters to send with the command.
The command’s JSON response loaded into a dictionary object.
Asynchronously Executes JavaScript in the current window/frame.
script = "var callback = arguments[arguments.length - 1]; " \ "window.setTimeout(function()< callback('timeout') >, 3000);" driver.execute_async_script(script)
Synchronously Executes JavaScript in the current window/frame.
driver.execute_script('return document.title;')
Overrides the current file detector (if necessary) in limited context. Ensures the original file detector is set afterwards.
with webdriver.file_detector_context(UselessFileDetector): someinput.send_keys('/etc/hosts')
- file_detector_class — Class of the desired file detector. If the class is different from the current file_detector, then the class is instantiated with args and kwargs and used as a file detector during the duration of the context manager.
- args — Optional arguments that get passed to the file detector class during instantiation.
- kwargs — Keyword arguments, passed the same way as args.
Find an element given a By strategy and locator.
element = driver.find_element(By.ID, 'foo')
Find elements given a By strategy and locator.
elements = driver.find_elements(By.CLASS_NAME, 'foo')
Goes one step forward in the browser history.
Invokes the window manager-specific ‘full screen’ operation.
Loads a web page in the current browser session.
get_cookie ( name ) → Optional[Dict] [source] ¶
Get a single cookie by name. Returns the cookie if found, None if not.
driver.get_cookie('my_cookie')
Returns a set of dictionaries, corresponding to cookies visible in the current session.
Returns the list of credentials owned by the authenticator.
Gets the log for a given log type.
driver.get_log('browser') driver.get_log('driver') driver.get_log('client') driver.get_log('server')
Gets the screenshot of the current window as a base64 encoded string which is useful in embedded images in HTML.
driver.get_screenshot_as_base64()
Saves a screenshot of the current window to a PNG image file. Returns False if there is any IOError, else returns True. Use full paths in your filename.
- filename: The full path you wish to save your screenshot to. This should end with a .png extension.
driver.get_screenshot_as_file('/Screenshots/foo.png')
Gets the screenshot of the current window as a binary data.
driver.get_screenshot_as_png()
Gets the x,y position of the current window.
driver.get_window_position()
Gets the x, y coordinates of the window as well as height and width of the current window.
Gets the width and height of the current window.
Sets a sticky timeout to implicitly wait for an element to be found, or a command to complete. This method only needs to be called one time per session. To set the timeout for calls to execute_async_script, see set_script_timeout.
Gets a list of the available log types. This only works with w3c compliant browsers.
Maximizes the current window that webdriver is using.
Invokes the window manager-specific ‘minimize’ operation.
Returns the name of the underlying browser for this instance.
Gets the current orientation of the device.
orientation = driver.orientation
Gets the source of the current page.
Store common javascript scripts to be executed later by a unique hashable ID.
print_page ( print_options: Optional[selenium.webdriver.common.print_page_options.PrintOptions] = None ) → str [source] ¶
Takes PDF of the current page.
The driver makes a best effort to return a PDF based on the provided parameters.
Quits the driver and closes every associated window.
Refreshes the current page.
Removes all credentials from the authenticator.
remove_credential ( credential_id: Union[str, bytearray] ) → None [source] ¶
Removes a credential from the authenticator.
Removes a previously added virtual authenticator.
The authenticator is no longer valid after removal, so no methods may be called.
save_screenshot ( filename ) → bool [source] ¶
Saves a screenshot of the current window to a PNG image file. Returns False if there is any IOError, else returns True. Use full paths in your filename.
- filename: The full path you wish to save your screenshot to. This should end with a .png extension.
driver.save_screenshot('/Screenshots/foo.png')
Set the amount of time to wait for a page load to complete before throwing an error.
driver.set_page_load_timeout(30)
Set the amount of time that the script should wait during an execute_async_script call before throwing an error.
driver.set_script_timeout(30)
Sets whether the authenticator will simulate success or fail on user verification.
verified: True if the authenticator will pass user verification, False otherwise.
set_window_position ( x, y, windowHandle: str = ‘current’ ) → dict [source] ¶
Sets the x,y position of the current window. (window.moveTo)
- x: the x-coordinate in pixels to set the window position
- y: the y-coordinate in pixels to set the window position
driver.set_window_position(0,0)
Sets the x, y coordinates of the window as well as height and width of the current window. This method is only supported for W3C compatible browsers; other browsers should use set_window_position and set_window_size .
driver.set_window_rect(x=10, y=10) driver.set_window_rect(width=100, height=200) driver.set_window_rect(x=10, y=10, width=100, height=200)
Sets the width and height of the current window. (window.resizeTo)
driver.set_window_size(800,600)
Called before starting a new session.
This method may be overridden to define custom startup behavior.
start_session ( capabilities: dict ) → None [source] ¶
Creates a new session with the desired capabilities.
Called after executing a quit command.
This method may be overridden to define custom shutdown behavior.
element = driver.switch_to.active_element alert = driver.switch_to.alert driver.switch_to.default_content() driver.switch_to.frame('frame_name') driver.switch_to.frame(1) driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe")[0]) driver.switch_to.parent_frame() driver.switch_to.window('main')
Get all the timeouts that have been set on the current session.
Returns the title of the current page.
Remove a pinned script from storage.
Returns the id of the virtual authenticator.
Returns the handles of all windows within the current session.