Sync implementation of the WebDriver protocol in Node.js.
Keep up to date with changes by checking the releases.
Tested on node.js 0.10.* and io.js.
On Ubuntu, you need to make sure you have libcurl installed.
sudo apt-get install libcurl4-openssl-dev
npm install webdriver-http-sync
Invocation:
var driver = new WebDriver(serverUrl, desiredCapabilities, httpOptions);
Simple Example:
var WebDriver = require('webdriver-http-sync');
var desiredCapabilities = {browserName: 'firefox'};
// Assuming selenium (packaged separately) has already been started:
// java -jar selenium-server-standalone-2.42.2.jar
var driver = new WebDriver('http://127.0.0.1:4444/wd/hub', desiredCapabilities);
driver.navigateTo('http://www.google.com');
You can use this library with SauceLabs or any another browser service with authorization. Just add your credentials into URL:
var WebDriver = require('webdriver-http-sync');
var desiredCapabilities = {browserName: 'firefox'};
var driver = new WebDriver('http://SAUCE_USERNAME:SAUCE_API_KEY@ondemand.saucelabs.com:4444/wd/hub', desiredCapabilities);
driver.navigateTo('http://www.google.com');
Method | Description |
---|---|
driver.navigateTo(url) |
Navigates the browser to the specificed relative or absolute url. If relative, the root is assumed to be http://127.0.0.1:#{applicationPort} , where applicationPort is passed in to the options for testium.runTests . |
driver.refresh() |
Refreshes the browser. |
driver.getElement(cssSelector) |
Finds an element on the page using the cssSelector and returns an Element. |
driver.getElements(cssSelector) |
Finds all elements on the page using the cssSelector and returns an array of Elements. |
driver.setTimeouts(type, milliseconds) |
Sets a timeout for a certain type of operation. Valid types are: "script" for script timeouts, "implicit" for modifying the implicit wait timeout and "page load" for setting a page load timeout. |
driver.setElementTimeout(milliseconds) |
Sets a timeout for WebDriver to find elements with getElement and getElements . |
driver.setScriptTimeout(milliseconds) |
Sets a timeout for WebDriver to execute async scripts with evaluateAsync . |
driver.getUrl() |
Returns the current url of the page. |
driver.getPageTitle() |
Returns the current page title. |
driver.getPageSource() |
Returns the current page's html source. |
driver.getScreenshot() |
Returns screenshot as a base64 encoded PNG. |
driver.getCapabilities() |
Returns browser capabilities for current session. |
driver.evaluate(javascriptString) |
Executes the given javascript. It must contain a return statement in order to get a value back. |
driver.evaluateAsync(javascriptString) |
Executes the given asynchronous javascript. The executed script must signal that is done by invoking the provided callback, which is always provided as the final argument to the function. |
driver.setCookie(Cookie) |
Sets a cookie on the current page's domain. Cookie = { name, value, path='/' } |
driver.switchToDefaultFrame() |
Change focus to default content on the page. |
driver.switchToFrame(indexOrNameOrId) |
Change focus to another frame on the page. |
driver.getWindowHandles() |
Retrieve the list of all window handles available to the session. |
driver.getCurrentWindowHandle() |
Retrieve the current window handle. |
driver.switchToWindow(name) |
Change focus to another window. The window to change focus to may be specified by its server assigned window handle, or by the value of its name attribute. |
driver.closeWindow() |
Close the current window. |
driver.getWindowSize(windowHandle) |
Get the size of the specified window. If no windowHandle in specified the current window is assumed. Returns an object with width and height values. |
driver.setWindowSize(width, height, windowHandle) |
Change the size of the specified window. If no windowHandle in specified the current window is assumed. |
driver.getWindowPosition(windowHandle) |
Get the position of the specified window. If no windowHandle in specified the current window is assumed. Returns an object with x and y values. |
driver.setWindowPosition(x, y, windowHandle) |
Change the position of the specified window. If no windowHandle in specified the current window is assumed. |
driver.maximizeWindow(windowHandle) |
Maximize the specified window if not already maximized. If no windowHandle in specified the current window is assumed. |
driver.getCookies() |
Returns all cookies visible to the current page. |
driver.clearCookies() |
Deletes all cookies visible to the current page. |
driver.setLocalStorageKey(key, value) |
Sets a local storage item for the current page. |
driver.getLocalStorageKeys() |
Returns all local storage keys visible to the current page. |
driver.clearLocalStorage() |
Deletes all local storage visible to the current page. |
driver.getConsoleLogs() |
Get browser console logs. |
driver.acceptAlert() |
Accepts the visable alert. |
driver.dismissAlert() |
Dismisses the visable alert. |
driver.getAlertText() |
Gets the visable alert's text. |
driver.typeAlert(text) |
Send text to the visable alert's input box. |
driver.getGeolocation() |
Returns the browser's HTML5 geolocation. Ex: {latitude: 37.425, longitude: -122.136, altitude: 10.0} . Not supported in all browsers. |
driver.setGeolocation(location) |
Set the browser's HTML5 geolocation. Expects location to be an object like {latitude: 37.425, longitude: -122.136, altitude: 10.0} . Not supported in all browsers. |
driver.buttonDown(button) |
Presses down the pointer button (default 0 = left, can be 1 = middle, 2 = right) at location of last element.movePointerRelativeTo() |
driver.buttonUp(button) |
Like driver.buttonDown() |
driver.click(button) |
Like driver.buttonDown() |
driver.sendKeys(strings...) |
Sends strings... to the active element. |
driver.close() |
Closes the WebDriver session. |
element = driver.getElement(selector)
Method | Description |
---|---|
element.get(attribute) |
Returns the element's specified attribute, which can be text , which returns the visible text of that element. |
element.getElement(cssSelector) |
Finds a child element of element using the cssSelector and returns an Element. |
element.getElements(cssSelector) |
Finds all child elements of the element using the cssSelector and returns an array of Elements. |
element.getLocation() |
Return an element's pixel location on the page. Ex: { y: 80, x: 406 } |
element.getLocationInView() |
Return an element's pixel location on the screen once it has been scrolled into view. Ex: { y: 80, x: 406 } |
element.getSize() |
Returns an element's size in pixels. Ex: { height: 207, width: 269 } |
element.isVisible() |
Returns true if the element is visible. |
element.type(strings...) |
Sends strings... to the input element. |
element.clear() |
Clears the input element. |
element.click() |
Calls click on the element. |
element.movePointerRelativeTo(xOffset, yOffset) |
Moves the pointer to the coordinates given, relative to this element (default centered) |
There are 97 WebDriver methods! The progress of implementing all of them is visualized below.
The most important and often used methods are already implemented. You can help out by implementing more methods.