Webdriver for Chrome

12
WebDriver for Chrome Ken Kania, Google

description

WebDriver for chrome

Transcript of Webdriver for Chrome

Page 1: Webdriver for Chrome

WebDriver for ChromeKen Kania, Google

Page 2: Webdriver for Chrome

Google Confidential and Proprietary

WebDriver for Chrome

Ken Kania

Page 3: Webdriver for Chrome

Google Confidential and Proprietary

Problem

● Over 300 million active Chrome users, spread across

o Windows

o Mac

o Linux

o ChromeOS

o Android

o iOS

● As a webapp developer, how can I automatically verify the critical functionality of my app works for all these users?

Page 4: Webdriver for Chrome

Google Confidential and Proprietary

Solution - ChromeDriver

● Follows the W3C WebDriver working draft

● Interoperable with the open source WebDriver clients

● Open source and maintained by members of the Chromium project

Page 5: Webdriver for Chrome

Google Confidential and Proprietary

WebDriver

● WebDriver is a cross-browser automation API primarily for website testing

API covers:

● Browser control

o navigation, snapshotting, window control, override geolocation

● User input simulation

o mouse, keyboard, file uploads, alert handling

● Web stuff

o find/query elements, evaluate JavaScript, manipulate cookies

Page 6: Webdriver for Chrome

Google Confidential and Proprietary

driver = webdriver.Chrome('chromedriver.exe')

driver.get('http://www.google.com/xhtml');

search_box = driver.find_element_by_name('q')

search_box.send_keys('ChromeDriver')

search_box.submit()

self.assertTrue('ChromeDriver' in driver.title)

driver.quit()

What does a test look like?

Page 7: Webdriver for Chrome

Google Confidential and Proprietary

How can I use it?

● Windows / Mac / Linux

o See Getting Started

● Android (alpha)

o See Getting Started

o Need Mac / Linux host connected to USB debug enabled device

o Specify android_package session capability

● ChromeOS (pre-alpha)

o Oops, you cannot yet!

● iOS (pre-alpha)

o Oops, you cannot yet!

Page 8: Webdriver for Chrome

Google Confidential and Proprietary

How does it work?

Chrome Browser

Chrome Driver

TestWebDriver

Library

WebDriver client WebDriver server

WebDriver protocol DevTools / Extensions

Page 9: Webdriver for Chrome

Google Confidential and Proprietary

ChromeDriver Implementation

● DevTools

o Provide access to internals of web app

Query and manipulate DOM tree

Debug JavaScript

Memory and performance profiling

Network traffic monitoring

o Supported on all Chrome platforms, except iOS

● Extensions

o Modify and enhance the browser functionality

Window control

Query in progress and finished user downloads

Page 10: Webdriver for Chrome

Google Confidential and Proprietary

ChromeDriver Implementation cont'd

ChromeDriver

Browser

HTTP Server

Session

Session

DevTools Server

Renderer

Chrome Driver

Extension

Extension Function

Dispatcher

DevTools Agent

Renderer

Web App

DevTools Agent

Page 11: Webdriver for Chrome

Google Confidential and Proprietary

Future Work

● General

o Memory and performance measurement APIs

o Testing Chrome extensions

● Android

o Support upcoming Chrome backed WebView

o Run driver on device (i.e., no host necessary)

● iOS

o UIWebView limitations

o Still in early stages

Page 12: Webdriver for Chrome

Google Confidential and Proprietary

The End

● Getting help

o ChromeDriver issue tracker

o [email protected]

● Get the source