// Licensed to the Software Freedom Conservancy (SFC) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The SFC licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. /** * @fileoverview This is an example of working with the different Firefox * release channels. Before running this example, you will need to have * installed Firefox's release, nightly, and developer editions: * * - https://www.mozilla.org/en-US/firefox/channel/desktop/#aurora * - https://www.mozilla.org/en-US/firefox/channel/desktop/#nightly */ 'use strict'; const {Builder, By, promise, until} = require('..'); const {Channel, Options} = require('../firefox'); let i = 0; function resposition(driver) { return driver.manage().window().setSize(600, 400) .then(_ => driver.manage().window().setPosition(300 * (i++), 0)); } function doSearch(driver) { // Start on the base about page. return driver.get('about:') // Reposition so users can see the three windows. .then(_ => resposition(driver)) // Pause so users can see the magic. .then(_ => promise.delayed(750)) // Now do the rest. .then(_ => driver.get('http://www.google.com/ncr')) .then(_ => driver.findElement(By.name('q')).sendKeys('webdriver')) .then(_ => driver.findElement(By.name('btnG')).click()) .then(_ => driver.wait(until.titleIs('webdriver - Google Search'), 1000)) .then(_ => driver.quit()); } function createDriver(channel) { let options = new Options().setBinary(channel); return new Builder().forBrowser('firefox').setFirefoxOptions(options).build(); } // NOTE: disabling the promise manager so searches all run concurrently. // For more on the promise manager and its pending deprecation, see // https://github.com/SeleniumHQ/selenium/issues/2969 promise.USE_PROMISE_MANAGER = false; Promise.all([ doSearch(createDriver(Channel.RELEASE)), doSearch(createDriver(Channel.AURORA)), // Developer Edition. doSearch(createDriver(Channel.NIGHTLY)), ]).then(_ => { console.log('Success!'); }, err => { console.error('An error occured! ' + err); setTimeout(() => {throw err}, 0); });